HLSL-IR: emit vector access using dot-component notation instead of indexing.

This fixes weird compilation errors from FXC.

Bug: 379127084
Change-Id: I418ce574241d7203f58efd7fca7844ca4a4a7dd4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/215055
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/tint/lang/hlsl/writer/access_test.cc b/src/tint/lang/hlsl/writer/access_test.cc
index 694b862..91f63a0 100644
--- a/src/tint/lang/hlsl/writer/access_test.cc
+++ b/src/tint/lang/hlsl/writer/access_test.cc
@@ -139,7 +139,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo() {
   int4 vec = (int(0)).xxxx;
-  vec[1u] = int(42);
+  vec.y = int(42);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/src/tint/lang/hlsl/writer/builtin_test.cc b/src/tint/lang/hlsl/writer/builtin_test.cc
index 6d08881..24fc5b3 100644
--- a/src/tint/lang/hlsl/writer/builtin_test.cc
+++ b/src/tint/lang/hlsl/writer/builtin_test.cc
@@ -838,7 +838,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture1D<float4> t) {
   uint2 v = (0u).xx;
-  t.GetDimensions(0u, v[0u], v[1u]);
+  t.GetDimensions(0u, v.x, v.y);
   uint d = v.y;
 }
 
@@ -865,7 +865,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture2D<float4> t) {
   uint3 v = (0u).xxx;
-  t.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  t.GetDimensions(0u, v.x, v.y, v.z);
   uint d = v.z;
 }
 
@@ -892,7 +892,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture3D<float4> t) {
   uint4 v = (0u).xxxx;
-  t.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  t.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint d = v.w;
 }
 
@@ -946,7 +946,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture2D<float4> t) {
   uint2 v = (0u).xx;
-  t.GetDimensions(v[0u], v[1u]);
+  t.GetDimensions(v.x, v.y);
   uint2 d = v;
 }
 
@@ -973,9 +973,9 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture2D<float4> t) {
   uint3 v = (0u).xxx;
-  t.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  t.GetDimensions(0u, v.x, v.y, v.z);
   uint3 v_1 = (0u).xxx;
-  t.GetDimensions(uint(min(uint(int(1)), (v.z - 1u))), v_1[0u], v_1[1u], v_1[2u]);
+  t.GetDimensions(uint(min(uint(int(1)), (v.z - 1u))), v_1.x, v_1.y, v_1.z);
   uint2 d = v_1.xy;
 }
 
@@ -1002,7 +1002,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture3D<float4> t) {
   uint3 v = (0u).xxx;
-  t.GetDimensions(v[0u], v[1u], v[2u]);
+  t.GetDimensions(v.x, v.y, v.z);
   uint3 d = v;
 }
 
@@ -1029,7 +1029,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture2DArray<float4> t) {
   uint3 v = (0u).xxx;
-  t.GetDimensions(v[0u], v[1u], v[2u]);
+  t.GetDimensions(v.x, v.y, v.z);
   uint d = v.z;
 }
 
@@ -1056,7 +1056,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(TextureCubeArray<float4> t) {
   uint3 v = (0u).xxx;
-  t.GetDimensions(v[0u], v[1u], v[2u]);
+  t.GetDimensions(v.x, v.y, v.z);
   uint d = v.z;
 }
 
@@ -1083,7 +1083,7 @@
     EXPECT_EQ(output_.hlsl, R"(
 void foo(Texture2DMS<float4> t) {
   uint3 v = (0u).xxx;
-  t.GetDimensions(v[0u], v[1u], v[2u]);
+  t.GetDimensions(v.x, v.y, v.z);
   uint d = v.z;
 }
 
diff --git a/src/tint/lang/hlsl/writer/function_test.cc b/src/tint/lang/hlsl/writer/function_test.cc
index 5291992..6db03d1 100644
--- a/src/tint/lang/hlsl/writer/function_test.cc
+++ b/src/tint/lang/hlsl/writer/function_test.cc
@@ -118,7 +118,7 @@
 }
 
 void main(main_inputs inputs) {
-  Interface v = {float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u]))};
+  Interface v = {float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w))};
   main_inner(v);
 }
 
@@ -214,7 +214,7 @@
 }
 
 frag_main_outputs frag_main(frag_main_inputs inputs) {
-  frag_main_outputs v = {frag_main_inner(float4(inputs.coord.xyz, (1.0f / inputs.coord[3u])))};
+  frag_main_outputs v = {frag_main_inner(float4(inputs.coord.xyz, (1.0f / inputs.coord.w)))};
   return v;
 }
 
@@ -313,7 +313,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  Interface v_3 = {float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u])), inputs.Interface_col1, inputs.Interface_col2};
+  Interface v_3 = {float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w)), inputs.Interface_col1, inputs.Interface_col2};
   frag_main_inner(v_3);
 }
 
diff --git a/src/tint/lang/hlsl/writer/printer/printer.cc b/src/tint/lang/hlsl/writer/printer/printer.cc
index d8bf121..584c273 100644
--- a/src/tint/lang/hlsl/writer/printer/printer.cc
+++ b/src/tint/lang/hlsl/writer/printer/printer.cc
@@ -331,21 +331,8 @@
 
     void EmitDiscard() { Line() << "discard;"; }
 
-    void EmitStoreVectorElement(const core::ir::StoreVectorElement* l) {
-        auto out = Line();
-
-        EmitValue(out, l->To());
-        out << "[";
-        EmitValue(out, l->Index());
-        out << "] = ";
-        EmitValue(out, l->Value());
-        out << ";";
-    }
-
-    void EmitLoadVectorElement(StringStream& out, const core::ir::LoadVectorElement* l) {
-        EmitValue(out, l->From());
-
-        if (auto* cnst = l->Index()->As<core::ir::Constant>()) {
+    void EmitVectorAccess(StringStream& out, const core::ir::Value* index) {
+        if (auto* cnst = index->As<core::ir::Constant>()) {
             out << ".";
             switch (cnst->Value()->ValueAs<uint32_t>()) {
                 case 0:
@@ -366,11 +353,26 @@
 
         } else {
             out << "[";
-            EmitValue(out, l->Index());
+            EmitValue(out, index);
             out << "]";
         }
     }
 
+    void EmitStoreVectorElement(const core::ir::StoreVectorElement* l) {
+        auto out = Line();
+
+        EmitValue(out, l->To());
+        EmitVectorAccess(out, l->Index());
+        out << " = ";
+        EmitValue(out, l->Value());
+        out << ";";
+    }
+
+    void EmitLoadVectorElement(StringStream& out, const core::ir::LoadVectorElement* l) {
+        EmitValue(out, l->From());
+        EmitVectorAccess(out, l->Index());
+    }
+
     void EmitExitSwitch() { Line() << "break;"; }
 
     void EmitSwitch(const core::ir::Switch* s) {
@@ -861,6 +863,7 @@
         EmitValue(out, a->Object());
 
         auto* current_type = a->Object()->Type();
+
         for (auto* index : a->Indices()) {
             TINT_ASSERT(current_type);
 
@@ -873,6 +876,10 @@
                     out << "." << member->Name().Name();
                     current_type = member->Type();
                 },
+                [&](const core::type::Vector*) {
+                    TINT_ASSERT(index == a->Indices().Back());
+                    EmitVectorAccess(out, index);
+                },
                 [&](Default) {
                     out << "[";
                     EmitValue(out, index);
diff --git a/test/tint/access/let/matrix.wgsl.expected.ir.dxc.hlsl b/test/tint/access/let/matrix.wgsl.expected.ir.dxc.hlsl
index bb80023..517c2e3 100644
--- a/test/tint/access/let/matrix.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/access/let/matrix.wgsl.expected.ir.dxc.hlsl
@@ -4,7 +4,7 @@
 void main() {
   float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3 v = m[int(1)];
-  float f = v[int(1)];
+  float f = v.y;
   s.Store(0u, asuint(f));
 }
 
diff --git a/test/tint/access/let/matrix.wgsl.expected.ir.fxc.hlsl b/test/tint/access/let/matrix.wgsl.expected.ir.fxc.hlsl
index bb80023..517c2e3 100644
--- a/test/tint/access/let/matrix.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/access/let/matrix.wgsl.expected.ir.fxc.hlsl
@@ -4,7 +4,7 @@
 void main() {
   float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3 v = m[int(1)];
-  float f = v[int(1)];
+  float f = v.y;
   s.Store(0u, asuint(f));
 }
 
diff --git a/test/tint/access/let/vector.wgsl.expected.ir.dxc.hlsl b/test/tint/access/let/vector.wgsl.expected.ir.dxc.hlsl
index 9f9594d..6cc200b 100644
--- a/test/tint/access/let/vector.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/access/let/vector.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   float3 v = float3(1.0f, 2.0f, 3.0f);
-  float scalar = v[1u];
+  float scalar = v.y;
   float2 swizzle2 = v.xz;
   float3 swizzle3 = v.xzy;
   float3 v_1 = float3((scalar).xxx);
diff --git a/test/tint/access/let/vector.wgsl.expected.ir.fxc.hlsl b/test/tint/access/let/vector.wgsl.expected.ir.fxc.hlsl
index 9f9594d..6cc200b 100644
--- a/test/tint/access/let/vector.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/access/let/vector.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   float3 v = float3(1.0f, 2.0f, 3.0f);
-  float scalar = v[1u];
+  float scalar = v.y;
   float2 swizzle2 = v.xz;
   float3 swizzle3 = v.xzy;
   float3 v_1 = float3((scalar).xxx);
diff --git a/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl
index 8d4a69d..86b17d3 100644
--- a/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/access/ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,7 +38,7 @@
 }
 
 int accept_ptr_vec_access_elements(inout float3 v1) {
-  v1[0u] = cross(v1, v1)[0u];
+  v1.x = cross(v1, v1).x;
   return tint_f32_to_i32(v1.x);
 }
 
diff --git a/test/tint/access/ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/access/ptr.wgsl.expected.ir.fxc.hlsl
index 8d4a69d..86b17d3 100644
--- a/test/tint/access/ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/access/ptr.wgsl.expected.ir.fxc.hlsl
@@ -38,7 +38,7 @@
 }
 
 int accept_ptr_vec_access_elements(inout float3 v1) {
-  v1[0u] = cross(v1, v1)[0u];
+  v1.x = cross(v1, v1).x;
   return tint_f32_to_i32(v1.x);
 }
 
diff --git a/test/tint/access/var/matrix.wgsl.expected.ir.dxc.hlsl b/test/tint/access/var/matrix.wgsl.expected.ir.dxc.hlsl
index 4979f58..9be57b5 100644
--- a/test/tint/access/var/matrix.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/access/var/matrix.wgsl.expected.ir.dxc.hlsl
@@ -4,7 +4,7 @@
 void main() {
   float3x3 m = float3x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
   float3 v = m[int(1)];
-  float f = v[int(1)];
+  float f = v.y;
   s.Store(0u, asuint(f));
 }
 
diff --git a/test/tint/access/var/matrix.wgsl.expected.ir.fxc.hlsl b/test/tint/access/var/matrix.wgsl.expected.ir.fxc.hlsl
index 4979f58..9be57b5 100644
--- a/test/tint/access/var/matrix.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/access/var/matrix.wgsl.expected.ir.fxc.hlsl
@@ -4,7 +4,7 @@
 void main() {
   float3x3 m = float3x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
   float3 v = m[int(1)];
-  float f = v[int(1)];
+  float f = v.y;
   s.Store(0u, asuint(f));
 }
 
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
index 03a5f65..7e250e5 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
@@ -110,22 +110,22 @@
   float3 arr2_vec3_f32[2] = v((512u + (uint(idx) * 544u)));
   int v_31 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_32 = (v_31 + int(scalar_u32));
-  int v_33 = ((v_32 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_34 = (v_33 + int(vec2_u32[0u]));
-  int v_35 = ((v_34 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_36 = (v_35 + int(vec3_u32[1u]));
-  int v_37 = ((v_36 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_38 = (v_37 + int(vec4_u32[2u]));
-  int v_39 = (v_38 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_40 = (v_39 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_41 = (v_40 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_42 = (v_41 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_43 = (v_42 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_44 = (v_43 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_45 = (v_44 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_46 = (v_45 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_47 = (v_46 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((v_47 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+  int v_33 = ((v_32 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_34 = (v_33 + int(vec2_u32.x));
+  int v_35 = ((v_34 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_36 = (v_35 + int(vec3_u32.y));
+  int v_37 = ((v_36 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_38 = (v_37 + int(vec4_u32.z));
+  int v_39 = (v_38 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_40 = (v_39 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_41 = (v_40 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_42 = (v_41 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_43 = (v_42 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_44 = (v_43 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_45 = (v_44 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_46 = (v_45 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_47 = (v_46 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((v_47 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x))));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
index 03a5f65..7e250e5 100644
--- a/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
@@ -110,22 +110,22 @@
   float3 arr2_vec3_f32[2] = v((512u + (uint(idx) * 544u)));
   int v_31 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_32 = (v_31 + int(scalar_u32));
-  int v_33 = ((v_32 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_34 = (v_33 + int(vec2_u32[0u]));
-  int v_35 = ((v_34 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_36 = (v_35 + int(vec3_u32[1u]));
-  int v_37 = ((v_36 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_38 = (v_37 + int(vec4_u32[2u]));
-  int v_39 = (v_38 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_40 = (v_39 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_41 = (v_40 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_42 = (v_41 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_43 = (v_42 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_44 = (v_43 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_45 = (v_44 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_46 = (v_45 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_47 = (v_46 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((v_47 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+  int v_33 = ((v_32 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_34 = (v_33 + int(vec2_u32.x));
+  int v_35 = ((v_34 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_36 = (v_35 + int(vec3_u32.y));
+  int v_37 = ((v_36 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_38 = (v_37 + int(vec4_u32.z));
+  int v_39 = (v_38 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_40 = (v_39 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_41 = (v_40 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_42 = (v_41 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_43 = (v_42 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_44 = (v_43 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_45 = (v_44 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_46 = (v_45 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_47 = (v_46 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((v_47 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x))));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
index 6c69773..88ef707 100644
--- a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
@@ -205,35 +205,35 @@
   int v_62 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_63 = (v_62 + int(scalar_u32));
   int v_64 = (v_63 + tint_f16_to_i32(scalar_f16));
-  int v_65 = ((v_64 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_66 = (v_65 + int(vec2_u32[0u]));
-  int v_67 = (v_66 + tint_f16_to_i32(vec2_f16[0u]));
-  int v_68 = ((v_67 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_69 = (v_68 + int(vec3_u32[1u]));
-  int v_70 = (v_69 + tint_f16_to_i32(vec3_f16[1u]));
-  int v_71 = ((v_70 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_72 = (v_71 + int(vec4_u32[2u]));
-  int v_73 = (v_72 + tint_f16_to_i32(vec4_f16[2u]));
-  int v_74 = (v_73 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_75 = (v_74 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_76 = (v_75 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_77 = (v_76 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_78 = (v_77 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_79 = (v_78 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_80 = (v_79 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_81 = (v_80 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_82 = (v_81 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  int v_83 = (v_82 + tint_f16_to_i32(mat2x2_f16[int(0)][0u]));
-  int v_84 = (v_83 + tint_f16_to_i32(mat2x3_f16[int(0)][0u]));
-  int v_85 = (v_84 + tint_f16_to_i32(mat2x4_f16[int(0)][0u]));
-  int v_86 = (v_85 + tint_f16_to_i32(mat3x2_f16[int(0)][0u]));
-  int v_87 = (v_86 + tint_f16_to_i32(mat3x3_f16[int(0)][0u]));
-  int v_88 = (v_87 + tint_f16_to_i32(mat3x4_f16[int(0)][0u]));
-  int v_89 = (v_88 + tint_f16_to_i32(mat4x2_f16[int(0)][0u]));
-  int v_90 = (v_89 + tint_f16_to_i32(mat4x3_f16[int(0)][0u]));
-  int v_91 = (v_90 + tint_f16_to_i32(mat4x4_f16[int(0)][0u]));
-  int v_92 = (v_91 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)][0u]));
-  s.Store(0u, asuint((v_92 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+  int v_65 = ((v_64 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_66 = (v_65 + int(vec2_u32.x));
+  int v_67 = (v_66 + tint_f16_to_i32(vec2_f16.x));
+  int v_68 = ((v_67 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_69 = (v_68 + int(vec3_u32.y));
+  int v_70 = (v_69 + tint_f16_to_i32(vec3_f16.y));
+  int v_71 = ((v_70 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_72 = (v_71 + int(vec4_u32.z));
+  int v_73 = (v_72 + tint_f16_to_i32(vec4_f16.z));
+  int v_74 = (v_73 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_75 = (v_74 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_76 = (v_75 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_77 = (v_76 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_78 = (v_77 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_79 = (v_78 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_80 = (v_79 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_81 = (v_80 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_82 = (v_81 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  int v_83 = (v_82 + tint_f16_to_i32(mat2x2_f16[int(0)].x));
+  int v_84 = (v_83 + tint_f16_to_i32(mat2x3_f16[int(0)].x));
+  int v_85 = (v_84 + tint_f16_to_i32(mat2x4_f16[int(0)].x));
+  int v_86 = (v_85 + tint_f16_to_i32(mat3x2_f16[int(0)].x));
+  int v_87 = (v_86 + tint_f16_to_i32(mat3x3_f16[int(0)].x));
+  int v_88 = (v_87 + tint_f16_to_i32(mat3x4_f16[int(0)].x));
+  int v_89 = (v_88 + tint_f16_to_i32(mat4x2_f16[int(0)].x));
+  int v_90 = (v_89 + tint_f16_to_i32(mat4x3_f16[int(0)].x));
+  int v_91 = (v_90 + tint_f16_to_i32(mat4x4_f16[int(0)].x));
+  int v_92 = (v_91 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)].x));
+  s.Store(0u, asuint((v_92 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x))));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.dxc.hlsl
index 62e0995..5bbedf5 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.dxc.hlsl
@@ -143,21 +143,21 @@
   Inner array_struct_inner[4] = v_3(552u);
   int v_39 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_40 = (v_39 + int(scalar_u32));
-  int v_41 = ((v_40 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_42 = (v_41 + int(vec2_u32[0u]));
-  int v_43 = ((v_42 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_44 = (v_43 + int(vec3_u32[1u]));
-  int v_45 = ((v_44 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_46 = (v_45 + int(vec4_u32[2u]));
-  int v_47 = (v_46 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_48 = (v_47 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_49 = (v_48 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_50 = (v_49 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_51 = (v_50 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_52 = (v_51 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_53 = (v_52 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_54 = (v_53 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_55 = (v_54 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((((v_55 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u])) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
+  int v_41 = ((v_40 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_42 = (v_41 + int(vec2_u32.x));
+  int v_43 = ((v_42 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_44 = (v_43 + int(vec3_u32.y));
+  int v_45 = ((v_44 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_46 = (v_45 + int(vec4_u32.z));
+  int v_47 = (v_46 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_48 = (v_47 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_49 = (v_48 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_50 = (v_49 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_51 = (v_50 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_52 = (v_51 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_53 = (v_52 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_54 = (v_53 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_55 = (v_54 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((((v_55 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x)) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
 }
 
diff --git a/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.fxc.hlsl
index 62e0995..5bbedf5 100644
--- a/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/static_index/read.wgsl.expected.ir.fxc.hlsl
@@ -143,21 +143,21 @@
   Inner array_struct_inner[4] = v_3(552u);
   int v_39 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_40 = (v_39 + int(scalar_u32));
-  int v_41 = ((v_40 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_42 = (v_41 + int(vec2_u32[0u]));
-  int v_43 = ((v_42 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_44 = (v_43 + int(vec3_u32[1u]));
-  int v_45 = ((v_44 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_46 = (v_45 + int(vec4_u32[2u]));
-  int v_47 = (v_46 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_48 = (v_47 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_49 = (v_48 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_50 = (v_49 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_51 = (v_50 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_52 = (v_51 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_53 = (v_52 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_54 = (v_53 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_55 = (v_54 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((((v_55 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u])) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
+  int v_41 = ((v_40 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_42 = (v_41 + int(vec2_u32.x));
+  int v_43 = ((v_42 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_44 = (v_43 + int(vec3_u32.y));
+  int v_45 = ((v_44 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_46 = (v_45 + int(vec4_u32.z));
+  int v_47 = (v_46 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_48 = (v_47 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_49 = (v_48 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_50 = (v_49 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_51 = (v_50 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_52 = (v_51 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_53 = (v_52 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_54 = (v_53 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_55 = (v_54 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((((v_55 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x)) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
 }
 
diff --git a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.dxc.hlsl
index 0e15bd8..ce44a81 100644
--- a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.dxc.hlsl
@@ -240,34 +240,34 @@
   int v_71 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_72 = (v_71 + int(scalar_u32));
   int v_73 = (v_72 + tint_f16_to_i32(scalar_f16));
-  int v_74 = ((v_73 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_75 = (v_74 + int(vec2_u32[0u]));
-  int v_76 = (v_75 + tint_f16_to_i32(vec2_f16[0u]));
-  int v_77 = ((v_76 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_78 = (v_77 + int(vec3_u32[1u]));
-  int v_79 = (v_78 + tint_f16_to_i32(vec3_f16[1u]));
-  int v_80 = ((v_79 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_81 = (v_80 + int(vec4_u32[2u]));
-  int v_82 = (v_81 + tint_f16_to_i32(vec4_f16[2u]));
-  int v_83 = (v_82 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_84 = (v_83 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_85 = (v_84 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_86 = (v_85 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_87 = (v_86 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_88 = (v_87 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_89 = (v_88 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_90 = (v_89 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_91 = (v_90 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  int v_92 = (v_91 + tint_f16_to_i32(mat2x2_f16[int(0)][0u]));
-  int v_93 = (v_92 + tint_f16_to_i32(mat2x3_f16[int(0)][0u]));
-  int v_94 = (v_93 + tint_f16_to_i32(mat2x4_f16[int(0)][0u]));
-  int v_95 = (v_94 + tint_f16_to_i32(mat3x2_f16[int(0)][0u]));
-  int v_96 = (v_95 + tint_f16_to_i32(mat3x3_f16[int(0)][0u]));
-  int v_97 = (v_96 + tint_f16_to_i32(mat3x4_f16[int(0)][0u]));
-  int v_98 = (v_97 + tint_f16_to_i32(mat4x2_f16[int(0)][0u]));
-  int v_99 = (v_98 + tint_f16_to_i32(mat4x3_f16[int(0)][0u]));
-  int v_100 = (v_99 + tint_f16_to_i32(mat4x4_f16[int(0)][0u]));
-  int v_101 = (v_100 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]));
-  s.Store(0u, asuint((((v_101 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)][0u])) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
+  int v_74 = ((v_73 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_75 = (v_74 + int(vec2_u32.x));
+  int v_76 = (v_75 + tint_f16_to_i32(vec2_f16.x));
+  int v_77 = ((v_76 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_78 = (v_77 + int(vec3_u32.y));
+  int v_79 = (v_78 + tint_f16_to_i32(vec3_f16.y));
+  int v_80 = ((v_79 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_81 = (v_80 + int(vec4_u32.z));
+  int v_82 = (v_81 + tint_f16_to_i32(vec4_f16.z));
+  int v_83 = (v_82 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_84 = (v_83 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_85 = (v_84 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_86 = (v_85 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_87 = (v_86 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_88 = (v_87 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_89 = (v_88 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_90 = (v_89 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_91 = (v_90 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  int v_92 = (v_91 + tint_f16_to_i32(mat2x2_f16[int(0)].x));
+  int v_93 = (v_92 + tint_f16_to_i32(mat2x3_f16[int(0)].x));
+  int v_94 = (v_93 + tint_f16_to_i32(mat2x4_f16[int(0)].x));
+  int v_95 = (v_94 + tint_f16_to_i32(mat3x2_f16[int(0)].x));
+  int v_96 = (v_95 + tint_f16_to_i32(mat3x3_f16[int(0)].x));
+  int v_97 = (v_96 + tint_f16_to_i32(mat3x4_f16[int(0)].x));
+  int v_98 = (v_97 + tint_f16_to_i32(mat4x2_f16[int(0)].x));
+  int v_99 = (v_98 + tint_f16_to_i32(mat4x3_f16[int(0)].x));
+  int v_100 = (v_99 + tint_f16_to_i32(mat4x4_f16[int(0)].x));
+  int v_101 = (v_100 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x));
+  s.Store(0u, asuint((((v_101 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)].x)) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
 }
 
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
index db9ff56..36a4766 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.dxc.hlsl
@@ -136,22 +136,22 @@
   float3 arr2_vec3_f32[2] = v((512u + (544u * uint(idx))));
   int v_55 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_56 = (v_55 + int(scalar_u32));
-  int v_57 = ((v_56 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_58 = (v_57 + int(vec2_u32[0u]));
-  int v_59 = ((v_58 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_60 = (v_59 + int(vec3_u32[1u]));
-  int v_61 = ((v_60 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_62 = (v_61 + int(vec4_u32[2u]));
-  int v_63 = (v_62 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_64 = (v_63 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_65 = (v_64 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_66 = (v_65 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_67 = (v_66 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_68 = (v_67 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_69 = (v_68 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_70 = (v_69 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_71 = (v_70 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((v_71 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+  int v_57 = ((v_56 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_58 = (v_57 + int(vec2_u32.x));
+  int v_59 = ((v_58 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_60 = (v_59 + int(vec3_u32.y));
+  int v_61 = ((v_60 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_62 = (v_61 + int(vec4_u32.z));
+  int v_63 = (v_62 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_64 = (v_63 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_65 = (v_64 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_66 = (v_65 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_67 = (v_66 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_68 = (v_67 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_69 = (v_68 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_70 = (v_69 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_71 = (v_70 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((v_71 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x))));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
index db9ff56..36a4766 100644
--- a/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read.wgsl.expected.ir.fxc.hlsl
@@ -136,22 +136,22 @@
   float3 arr2_vec3_f32[2] = v((512u + (544u * uint(idx))));
   int v_55 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_56 = (v_55 + int(scalar_u32));
-  int v_57 = ((v_56 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_58 = (v_57 + int(vec2_u32[0u]));
-  int v_59 = ((v_58 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_60 = (v_59 + int(vec3_u32[1u]));
-  int v_61 = ((v_60 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_62 = (v_61 + int(vec4_u32[2u]));
-  int v_63 = (v_62 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_64 = (v_63 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_65 = (v_64 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_66 = (v_65 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_67 = (v_66 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_68 = (v_67 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_69 = (v_68 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_70 = (v_69 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_71 = (v_70 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((v_71 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]))));
+  int v_57 = ((v_56 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_58 = (v_57 + int(vec2_u32.x));
+  int v_59 = ((v_58 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_60 = (v_59 + int(vec3_u32.y));
+  int v_61 = ((v_60 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_62 = (v_61 + int(vec4_u32.z));
+  int v_63 = (v_62 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_64 = (v_63 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_65 = (v_64 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_66 = (v_65 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_67 = (v_66 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_68 = (v_67 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_69 = (v_68 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_70 = (v_69 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_71 = (v_70 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((v_71 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x))));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
index 3c937a8..df414e7 100644
--- a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.dxc.hlsl
@@ -276,35 +276,35 @@
   int v_116 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_117 = (v_116 + int(scalar_u32));
   int v_118 = (v_117 + tint_f16_to_i32(scalar_f16));
-  int v_119 = ((v_118 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_120 = (v_119 + int(vec2_u32[0u]));
-  int v_121 = (v_120 + tint_f16_to_i32(vec2_f16[0u]));
-  int v_122 = ((v_121 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_123 = (v_122 + int(vec3_u32[1u]));
-  int v_124 = (v_123 + tint_f16_to_i32(vec3_f16[1u]));
-  int v_125 = ((v_124 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_126 = (v_125 + int(vec4_u32[2u]));
-  int v_127 = (v_126 + tint_f16_to_i32(vec4_f16[2u]));
-  int v_128 = (v_127 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_129 = (v_128 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_130 = (v_129 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_131 = (v_130 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_132 = (v_131 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_133 = (v_132 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_134 = (v_133 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_135 = (v_134 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_136 = (v_135 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  int v_137 = (v_136 + tint_f16_to_i32(mat2x2_f16[int(0)][0u]));
-  int v_138 = (v_137 + tint_f16_to_i32(mat2x3_f16[int(0)][0u]));
-  int v_139 = (v_138 + tint_f16_to_i32(mat2x4_f16[int(0)][0u]));
-  int v_140 = (v_139 + tint_f16_to_i32(mat3x2_f16[int(0)][0u]));
-  int v_141 = (v_140 + tint_f16_to_i32(mat3x3_f16[int(0)][0u]));
-  int v_142 = (v_141 + tint_f16_to_i32(mat3x4_f16[int(0)][0u]));
-  int v_143 = (v_142 + tint_f16_to_i32(mat4x2_f16[int(0)][0u]));
-  int v_144 = (v_143 + tint_f16_to_i32(mat4x3_f16[int(0)][0u]));
-  int v_145 = (v_144 + tint_f16_to_i32(mat4x4_f16[int(0)][0u]));
-  int v_146 = (v_145 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]));
-  s.Store(0u, asuint((v_146 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)][0u]))));
+  int v_119 = ((v_118 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_120 = (v_119 + int(vec2_u32.x));
+  int v_121 = (v_120 + tint_f16_to_i32(vec2_f16.x));
+  int v_122 = ((v_121 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_123 = (v_122 + int(vec3_u32.y));
+  int v_124 = (v_123 + tint_f16_to_i32(vec3_f16.y));
+  int v_125 = ((v_124 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_126 = (v_125 + int(vec4_u32.z));
+  int v_127 = (v_126 + tint_f16_to_i32(vec4_f16.z));
+  int v_128 = (v_127 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_129 = (v_128 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_130 = (v_129 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_131 = (v_130 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_132 = (v_131 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_133 = (v_132 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_134 = (v_133 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_135 = (v_134 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_136 = (v_135 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  int v_137 = (v_136 + tint_f16_to_i32(mat2x2_f16[int(0)].x));
+  int v_138 = (v_137 + tint_f16_to_i32(mat2x3_f16[int(0)].x));
+  int v_139 = (v_138 + tint_f16_to_i32(mat2x4_f16[int(0)].x));
+  int v_140 = (v_139 + tint_f16_to_i32(mat3x2_f16[int(0)].x));
+  int v_141 = (v_140 + tint_f16_to_i32(mat3x3_f16[int(0)].x));
+  int v_142 = (v_141 + tint_f16_to_i32(mat3x4_f16[int(0)].x));
+  int v_143 = (v_142 + tint_f16_to_i32(mat4x2_f16[int(0)].x));
+  int v_144 = (v_143 + tint_f16_to_i32(mat4x3_f16[int(0)].x));
+  int v_145 = (v_144 + tint_f16_to_i32(mat4x4_f16[int(0)].x));
+  int v_146 = (v_145 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x));
+  s.Store(0u, asuint((v_146 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)].x))));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.dxc.hlsl
index 82023bf..14922fb 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.dxc.hlsl
@@ -154,21 +154,21 @@
   Inner array_struct_inner[4] = v_3(576u);
   int v_48 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_49 = (v_48 + int(scalar_u32));
-  int v_50 = ((v_49 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_51 = (v_50 + int(vec2_u32[0u]));
-  int v_52 = ((v_51 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_53 = (v_52 + int(vec3_u32[1u]));
-  int v_54 = ((v_53 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_55 = (v_54 + int(vec4_u32[2u]));
-  int v_56 = (v_55 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_57 = (v_56 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_58 = (v_57 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_59 = (v_58 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_60 = (v_59 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_61 = (v_60 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_62 = (v_61 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_63 = (v_62 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_64 = (v_63 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((((v_64 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u])) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
+  int v_50 = ((v_49 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_51 = (v_50 + int(vec2_u32.x));
+  int v_52 = ((v_51 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_53 = (v_52 + int(vec3_u32.y));
+  int v_54 = ((v_53 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_55 = (v_54 + int(vec4_u32.z));
+  int v_56 = (v_55 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_57 = (v_56 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_58 = (v_57 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_59 = (v_58 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_60 = (v_59 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_61 = (v_60 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_62 = (v_61 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_63 = (v_62 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_64 = (v_63 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((((v_64 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x)) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
 }
 
diff --git a/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.fxc.hlsl
index 82023bf..14922fb 100644
--- a/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/static_index/read.wgsl.expected.ir.fxc.hlsl
@@ -154,21 +154,21 @@
   Inner array_struct_inner[4] = v_3(576u);
   int v_48 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_49 = (v_48 + int(scalar_u32));
-  int v_50 = ((v_49 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_51 = (v_50 + int(vec2_u32[0u]));
-  int v_52 = ((v_51 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_53 = (v_52 + int(vec3_u32[1u]));
-  int v_54 = ((v_53 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_55 = (v_54 + int(vec4_u32[2u]));
-  int v_56 = (v_55 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_57 = (v_56 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_58 = (v_57 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_59 = (v_58 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_60 = (v_59 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_61 = (v_60 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_62 = (v_61 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_63 = (v_62 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_64 = (v_63 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  s.Store(0u, asuint((((v_64 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u])) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
+  int v_50 = ((v_49 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_51 = (v_50 + int(vec2_u32.x));
+  int v_52 = ((v_51 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_53 = (v_52 + int(vec3_u32.y));
+  int v_54 = ((v_53 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_55 = (v_54 + int(vec4_u32.z));
+  int v_56 = (v_55 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_57 = (v_56 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_58 = (v_57 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_59 = (v_58 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_60 = (v_59 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_61 = (v_60 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_62 = (v_61 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_63 = (v_62 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_64 = (v_63 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  s.Store(0u, asuint((((v_64 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x)) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
 }
 
diff --git a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.dxc.hlsl
index 31da945..e930308 100644
--- a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.dxc.hlsl
@@ -290,34 +290,34 @@
   int v_104 = (tint_f32_to_i32(scalar_f32) + scalar_i32);
   int v_105 = (v_104 + int(scalar_u32));
   int v_106 = (v_105 + tint_f16_to_i32(scalar_f16));
-  int v_107 = ((v_106 + tint_f32_to_i32(vec2_f32[0u])) + vec2_i32[0u]);
-  int v_108 = (v_107 + int(vec2_u32[0u]));
-  int v_109 = (v_108 + tint_f16_to_i32(vec2_f16[0u]));
-  int v_110 = ((v_109 + tint_f32_to_i32(vec3_f32[1u])) + vec3_i32[1u]);
-  int v_111 = (v_110 + int(vec3_u32[1u]));
-  int v_112 = (v_111 + tint_f16_to_i32(vec3_f16[1u]));
-  int v_113 = ((v_112 + tint_f32_to_i32(vec4_f32[2u])) + vec4_i32[2u]);
-  int v_114 = (v_113 + int(vec4_u32[2u]));
-  int v_115 = (v_114 + tint_f16_to_i32(vec4_f16[2u]));
-  int v_116 = (v_115 + tint_f32_to_i32(mat2x2_f32[int(0)][0u]));
-  int v_117 = (v_116 + tint_f32_to_i32(mat2x3_f32[int(0)][0u]));
-  int v_118 = (v_117 + tint_f32_to_i32(mat2x4_f32[int(0)][0u]));
-  int v_119 = (v_118 + tint_f32_to_i32(mat3x2_f32[int(0)][0u]));
-  int v_120 = (v_119 + tint_f32_to_i32(mat3x3_f32[int(0)][0u]));
-  int v_121 = (v_120 + tint_f32_to_i32(mat3x4_f32[int(0)][0u]));
-  int v_122 = (v_121 + tint_f32_to_i32(mat4x2_f32[int(0)][0u]));
-  int v_123 = (v_122 + tint_f32_to_i32(mat4x3_f32[int(0)][0u]));
-  int v_124 = (v_123 + tint_f32_to_i32(mat4x4_f32[int(0)][0u]));
-  int v_125 = (v_124 + tint_f16_to_i32(mat2x2_f16[int(0)][0u]));
-  int v_126 = (v_125 + tint_f16_to_i32(mat2x3_f16[int(0)][0u]));
-  int v_127 = (v_126 + tint_f16_to_i32(mat2x4_f16[int(0)][0u]));
-  int v_128 = (v_127 + tint_f16_to_i32(mat3x2_f16[int(0)][0u]));
-  int v_129 = (v_128 + tint_f16_to_i32(mat3x3_f16[int(0)][0u]));
-  int v_130 = (v_129 + tint_f16_to_i32(mat3x4_f16[int(0)][0u]));
-  int v_131 = (v_130 + tint_f16_to_i32(mat4x2_f16[int(0)][0u]));
-  int v_132 = (v_131 + tint_f16_to_i32(mat4x3_f16[int(0)][0u]));
-  int v_133 = (v_132 + tint_f16_to_i32(mat4x4_f16[int(0)][0u]));
-  int v_134 = (v_133 + tint_f32_to_i32(arr2_vec3_f32[int(0)][0u]));
-  s.Store(0u, asuint((((v_134 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)][0u])) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
+  int v_107 = ((v_106 + tint_f32_to_i32(vec2_f32.x)) + vec2_i32.x);
+  int v_108 = (v_107 + int(vec2_u32.x));
+  int v_109 = (v_108 + tint_f16_to_i32(vec2_f16.x));
+  int v_110 = ((v_109 + tint_f32_to_i32(vec3_f32.y)) + vec3_i32.y);
+  int v_111 = (v_110 + int(vec3_u32.y));
+  int v_112 = (v_111 + tint_f16_to_i32(vec3_f16.y));
+  int v_113 = ((v_112 + tint_f32_to_i32(vec4_f32.z)) + vec4_i32.z);
+  int v_114 = (v_113 + int(vec4_u32.z));
+  int v_115 = (v_114 + tint_f16_to_i32(vec4_f16.z));
+  int v_116 = (v_115 + tint_f32_to_i32(mat2x2_f32[int(0)].x));
+  int v_117 = (v_116 + tint_f32_to_i32(mat2x3_f32[int(0)].x));
+  int v_118 = (v_117 + tint_f32_to_i32(mat2x4_f32[int(0)].x));
+  int v_119 = (v_118 + tint_f32_to_i32(mat3x2_f32[int(0)].x));
+  int v_120 = (v_119 + tint_f32_to_i32(mat3x3_f32[int(0)].x));
+  int v_121 = (v_120 + tint_f32_to_i32(mat3x4_f32[int(0)].x));
+  int v_122 = (v_121 + tint_f32_to_i32(mat4x2_f32[int(0)].x));
+  int v_123 = (v_122 + tint_f32_to_i32(mat4x3_f32[int(0)].x));
+  int v_124 = (v_123 + tint_f32_to_i32(mat4x4_f32[int(0)].x));
+  int v_125 = (v_124 + tint_f16_to_i32(mat2x2_f16[int(0)].x));
+  int v_126 = (v_125 + tint_f16_to_i32(mat2x3_f16[int(0)].x));
+  int v_127 = (v_126 + tint_f16_to_i32(mat2x4_f16[int(0)].x));
+  int v_128 = (v_127 + tint_f16_to_i32(mat3x2_f16[int(0)].x));
+  int v_129 = (v_128 + tint_f16_to_i32(mat3x3_f16[int(0)].x));
+  int v_130 = (v_129 + tint_f16_to_i32(mat3x4_f16[int(0)].x));
+  int v_131 = (v_130 + tint_f16_to_i32(mat4x2_f16[int(0)].x));
+  int v_132 = (v_131 + tint_f16_to_i32(mat4x3_f16[int(0)].x));
+  int v_133 = (v_132 + tint_f16_to_i32(mat4x4_f16[int(0)].x));
+  int v_134 = (v_133 + tint_f32_to_i32(arr2_vec3_f32[int(0)].x));
+  s.Store(0u, asuint((((v_134 + tint_f16_to_i32(arr2_mat4x2_f16[int(0)][int(0)].x)) + struct_inner.scalar_i32) + array_struct_inner[int(0)].scalar_i32)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 201cc8f..63559ed 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -46,6 +46,6 @@
   float2x2 l_a_i = v(v_8);
   uint4 v_10 = a[((v_8 + v_9) / 16u)];
   float2 l_a_i_i = asfloat(((((((v_8 + v_9) % 16u) / 4u) == 2u)) ? (v_10.zw) : (v_10.xy)));
-  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 201cc8f..63559ed 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -46,6 +46,6 @@
   float2x2 l_a_i = v(v_8);
   uint4 v_10 = a[((v_8 + v_9) / 16u)];
   float2 l_a_i_i = asfloat(((((((v_8 + v_9) % 16u) / 4u) == 2u)) ? (v_10.zw) : (v_10.xy)));
-  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index ae0d291..8ba2a03 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -37,6 +37,6 @@
   float2x2 l_a[4] = v_4(0u);
   float2x2 l_a_i = v(32u);
   float2 l_a_i_i = asfloat(a[2u].zw);
-  s.Store(0u, asuint((((asfloat(a[2u].z) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[2u].z) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index ae0d291..8ba2a03 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -37,6 +37,6 @@
   float2x2 l_a[4] = v_4(0u);
   float2x2 l_a_i = v(32u);
   float2 l_a_i_i = asfloat(a[2u].zw);
-  s.Store(0u, asuint((((asfloat(a[2u].z) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[2u].z) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index e92df20..10b0966 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -14,8 +14,8 @@
 void f() {
   float2x2 t = transpose(v(32u));
   float l = length(asfloat(u[0u].zw).yx);
-  float a = abs(asfloat(u[0u].zw).yx[0u]);
-  float v_4 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[0u].zw).yx.x);
+  float v_4 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_4 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index e92df20..10b0966 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -14,8 +14,8 @@
 void f() {
   float2x2 t = transpose(v(32u));
   float l = length(asfloat(u[0u].zw).yx);
-  float a = abs(asfloat(u[0u].zw).yx[0u]);
-  float v_4 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[0u].zw).yx.x);
+  float v_4 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_4 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 658ae5b..57fc09f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float2x2 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float2x2 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float2 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -54,6 +54,6 @@
   float v_10 = a(v_9);
   float v_11 = (v_10 + b(v_1(16u)));
   float v_12 = (v_11 + c(asfloat(u[1u].xy).yx));
-  s.Store(0u, asuint((v_12 + d(asfloat(u[1u].xy).yx[0u]))));
+  s.Store(0u, asuint((v_12 + d(asfloat(u[1u].xy).yx.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 658ae5b..57fc09f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float2x2 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float2x2 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float2 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -54,6 +54,6 @@
   float v_10 = a(v_9);
   float v_11 = (v_10 + b(v_1(16u)));
   float v_12 = (v_11 + c(asfloat(u[1u].xy).yx));
-  s.Store(0u, asuint((v_12 + d(asfloat(u[1u].xy).yx[0u]))));
+  s.Store(0u, asuint((v_12 + d(asfloat(u[1u].xy).yx.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 9e52e29..64c99c3 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -39,7 +39,7 @@
   p = v_8;
   p[int(1)] = v(32u);
   p[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  p[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  p[int(1)][int(0)].x = asfloat(u[0u].z);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 9e52e29..64c99c3 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -39,7 +39,7 @@
   p = v_8;
   p[int(1)] = v(32u);
   p[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  p[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  p[int(1)][int(0)].x = asfloat(u[0u].z);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 974bb61..983c1ec 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -57,7 +57,7 @@
   w = v_10;
   w[int(1)] = v(32u);
   w[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  w[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  w[int(1)][int(0)].x = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 974bb61..983c1ec 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -57,7 +57,7 @@
   w = v_10;
   w[int(1)] = v(32u);
   w[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  w[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  w[int(1)][int(0)].x = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index c6df656..719a1b8 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -59,6 +59,6 @@
   uint4 v_14 = a[((v_12 + v_13) / 16u)];
   vector<float16_t, 3> l_a_i_i = tint_bitcast_to_f16(((((((v_12 + v_13) % 16u) / 4u) == 2u)) ? (v_14.zw) : (v_14.xy))).xyz;
   uint v_15 = a[((v_12 + v_13) / 16u)][(((v_12 + v_13) % 16u) / 4u)];
-  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_15 >> (((((v_12 + v_13) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_15 >> (((((v_12 + v_13) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 49b65ce..c2b4175 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -49,6 +49,6 @@
   matrix<float16_t, 2, 3> l_a[4] = v_8(0u);
   matrix<float16_t, 2, 3> l_a_i = v_4(32u);
   vector<float16_t, 3> l_a_i_i = tint_bitcast_to_f16(a[2u].zw).xyz;
-  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[2u].z)) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[2u].z)) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 2c32583..0d2875b 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -26,8 +26,8 @@
 void f() {
   matrix<float16_t, 3, 2> t = transpose(v_4(32u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).xyz.zxy);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).xyz.zxy.x);
   float16_t v_8 = float16_t(a);
-  s.Store<float16_t>(0u, ((v_8 + float16_t(l)) + t[int(0)][0u]));
+  s.Store<float16_t>(0u, ((v_8 + float16_t(l)) + t[int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index ba03a5b..0b42010 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float16_t a(matrix<float16_t, 2, 3> a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float16_t b(matrix<float16_t, 2, 3> m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float16_t c(vector<float16_t, 3> v) {
-  return v[0u];
+  return v.x;
 }
 
 float16_t d(float16_t f_1) {
@@ -66,6 +66,6 @@
   float16_t v_13 = a(v_12);
   float16_t v_14 = (v_13 + b(v_4(16u)));
   float16_t v_15 = (v_14 + c(tint_bitcast_to_f16(u[1u].xy).xyz.zxy));
-  s.Store<float16_t>(0u, (v_15 + d(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u])));
+  s.Store<float16_t>(0u, (v_15 + d(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 4de6025..0e898e0 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -51,7 +51,7 @@
   p = v_12;
   p[int(1)] = v_4(32u);
   p[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).xyz.zxy;
-  p[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  p[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
   s.Store<float16_t>(0u, p[int(1)][int(0)].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 18f8ea6..5fc291e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -70,7 +70,7 @@
   w = v_14;
   w[int(1)] = v_4(32u);
   w[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).xyz.zxy;
-  w[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  w[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
   s.Store<float16_t>(0u, w[int(1)][int(0)].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index b45cac2..8bb6216 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -43,6 +43,6 @@
   float2x3 l_a[4] = v_2(0u);
   float2x3 l_a_i = v(v_6);
   float3 l_a_i_i = asfloat(a[((v_6 + v_7) / 16u)].xyz);
-  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index b45cac2..8bb6216 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
   float2x3 l_a[4] = v_2(0u);
   float2x3 l_a_i = v(v_6);
   float3 l_a_i_i = asfloat(a[((v_6 + v_7) / 16u)].xyz);
-  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index acfe2a3..3ab616e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -35,6 +35,6 @@
   float2x3 l_a[4] = v_2(0u);
   float2x3 l_a_i = v(64u);
   float3 l_a_i_i = asfloat(a[5u].xyz);
-  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index acfe2a3..3ab616e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -35,6 +35,6 @@
   float2x3 l_a[4] = v_2(0u);
   float2x3 l_a_i = v(64u);
   float3 l_a_i_i = asfloat(a[5u].xyz);
-  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 3d806b5..04bd6e3 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -12,8 +12,8 @@
 void f() {
   float3x2 t = transpose(v(64u));
   float l = length(asfloat(u[1u].xyz).zxy);
-  float a = abs(asfloat(u[1u].xyz).zxy[0u]);
-  float v_2 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u].xyz).zxy.x);
+  float v_2 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_2 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 3d806b5..04bd6e3 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -12,8 +12,8 @@
 void f() {
   float3x2 t = transpose(v(64u));
   float l = length(asfloat(u[1u].xyz).zxy);
-  float a = abs(asfloat(u[1u].xyz).zxy[0u]);
-  float v_2 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u].xyz).zxy.x);
+  float v_2 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_2 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 9d7e15c..ac9bb3c 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float2x3 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float2x3 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float3 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -52,6 +52,6 @@
   float v_8 = a(v_7);
   float v_9 = (v_8 + b(v_1(32u)));
   float v_10 = (v_9 + c(asfloat(u[2u].xyz).zxy));
-  s.Store(0u, asuint((v_10 + d(asfloat(u[2u].xyz).zxy[0u]))));
+  s.Store(0u, asuint((v_10 + d(asfloat(u[2u].xyz).zxy.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 9d7e15c..ac9bb3c 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float2x3 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float2x3 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float3 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -52,6 +52,6 @@
   float v_8 = a(v_7);
   float v_9 = (v_8 + b(v_1(32u)));
   float v_10 = (v_9 + c(asfloat(u[2u].xyz).zxy));
-  s.Store(0u, asuint((v_10 + d(asfloat(u[2u].xyz).zxy[0u]))));
+  s.Store(0u, asuint((v_10 + d(asfloat(u[2u].xyz).zxy.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 059ee71..9652e47 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -37,7 +37,7 @@
   p = v_6;
   p[int(1)] = v(64u);
   p[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 059ee71..9652e47 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -37,7 +37,7 @@
   p = v_6;
   p[int(1)] = v(64u);
   p[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index aee810e..a84bd9e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -55,7 +55,7 @@
   w = v_8;
   w[int(1)] = v(64u);
   w[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index aee810e..a84bd9e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -55,7 +55,7 @@
   w = v_8;
   w[int(1)] = v(64u);
   w[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index e1c99b5..eef9514 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -59,6 +59,6 @@
   uint4 v_14 = a[((v_12 + v_13) / 16u)];
   vector<float16_t, 4> l_a_i_i = tint_bitcast_to_f16(((((((v_12 + v_13) % 16u) / 4u) == 2u)) ? (v_14.zw) : (v_14.xy)));
   uint v_15 = a[((v_12 + v_13) / 16u)][(((v_12 + v_13) % 16u) / 4u)];
-  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_15 >> (((((v_12 + v_13) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_15 >> (((((v_12 + v_13) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index b2cc45d..1d491c4 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -49,6 +49,6 @@
   matrix<float16_t, 2, 4> l_a[4] = v_8(0u);
   matrix<float16_t, 2, 4> l_a_i = v_4(32u);
   vector<float16_t, 4> l_a_i_i = tint_bitcast_to_f16(a[2u].zw);
-  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[2u].z)) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[2u].z)) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index acd0104..dd0fd8d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -26,8 +26,8 @@
 void f() {
   matrix<float16_t, 4, 2> t = transpose(v_4(32u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).ywxz);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).ywxz[0u]);
-  float16_t v_8 = (t[int(0)][0u] + float16_t(l));
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).ywxz.x);
+  float16_t v_8 = (t[int(0)].x + float16_t(l));
   s.Store<float16_t>(0u, (v_8 + float16_t(a)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 814f568..59b5f6c 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float16_t a(matrix<float16_t, 2, 4> a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float16_t b(matrix<float16_t, 2, 4> m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float16_t c(vector<float16_t, 4> v) {
-  return v[0u];
+  return v.x;
 }
 
 float16_t d(float16_t f_1) {
@@ -66,6 +66,6 @@
   float16_t v_13 = a(v_12);
   float16_t v_14 = (v_13 + b(v_4(16u)));
   float16_t v_15 = (v_14 + c(tint_bitcast_to_f16(u[1u].xy).ywxz));
-  s.Store<float16_t>(0u, (v_15 + d(tint_bitcast_to_f16(u[1u].xy).ywxz[0u])));
+  s.Store<float16_t>(0u, (v_15 + d(tint_bitcast_to_f16(u[1u].xy).ywxz.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
index b8087f2..6df806a 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -51,7 +51,7 @@
   p = v_12;
   p[int(1)] = v_4(32u);
   p[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).ywxz;
-  p[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  p[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
   s.Store<float16_t>(0u, p[int(1)][int(0)].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 80634e2..b79883d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -69,7 +69,7 @@
   w = v_14;
   w[int(1)] = v_4(32u);
   w[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).ywxz;
-  w[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  w[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 5f5713f..bad0dd2 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -43,6 +43,6 @@
   float2x4 l_a[4] = v_2(0u);
   float2x4 l_a_i = v(v_6);
   float4 l_a_i_i = asfloat(a[((v_6 + v_7) / 16u)]);
-  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 5f5713f..bad0dd2 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
   float2x4 l_a[4] = v_2(0u);
   float2x4 l_a_i = v(v_6);
   float4 l_a_i_i = asfloat(a[((v_6 + v_7) / 16u)]);
-  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_6 + v_7) / 16u)][(((v_6 + v_7) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index d8d2507..e2dc160 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -35,6 +35,6 @@
   float2x4 l_a[4] = v_2(0u);
   float2x4 l_a_i = v(64u);
   float4 l_a_i_i = asfloat(a[5u]);
-  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index d8d2507..e2dc160 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -35,6 +35,6 @@
   float2x4 l_a[4] = v_2(0u);
   float2x4 l_a_i = v(64u);
   float4 l_a_i_i = asfloat(a[5u]);
-  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[5u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index bdf31cd..5314cca 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -12,8 +12,8 @@
 void f() {
   float4x2 t = transpose(v(64u));
   float l = length(asfloat(u[1u]).ywxz);
-  float a = abs(asfloat(u[1u]).ywxz[0u]);
-  float v_2 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u]).ywxz.x);
+  float v_2 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_2 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index bdf31cd..5314cca 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -12,8 +12,8 @@
 void f() {
   float4x2 t = transpose(v(64u));
   float l = length(asfloat(u[1u]).ywxz);
-  float a = abs(asfloat(u[1u]).ywxz[0u]);
-  float v_2 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u]).ywxz.x);
+  float v_2 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_2 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index bd7435f..b25714f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float2x4 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float2x4 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float4 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -52,6 +52,6 @@
   float v_8 = a(v_7);
   float v_9 = (v_8 + b(v_1(32u)));
   float v_10 = (v_9 + c(asfloat(u[2u]).ywxz));
-  s.Store(0u, asuint((v_10 + d(asfloat(u[2u]).ywxz[0u]))));
+  s.Store(0u, asuint((v_10 + d(asfloat(u[2u]).ywxz.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index bd7435f..b25714f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float2x4 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float2x4 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float4 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -52,6 +52,6 @@
   float v_8 = a(v_7);
   float v_9 = (v_8 + b(v_1(32u)));
   float v_10 = (v_9 + c(asfloat(u[2u]).ywxz));
-  s.Store(0u, asuint((v_10 + d(asfloat(u[2u]).ywxz[0u]))));
+  s.Store(0u, asuint((v_10 + d(asfloat(u[2u]).ywxz.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 2426811..5270b9b 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -37,7 +37,7 @@
   p = v_6;
   p[int(1)] = v(64u);
   p[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 2426811..5270b9b 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -37,7 +37,7 @@
   p = v_6;
   p[int(1)] = v(64u);
   p[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 5c8613a..e71288f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -55,7 +55,7 @@
   w = v_8;
   w[int(1)] = v(64u);
   w[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 5c8613a..e71288f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -55,7 +55,7 @@
   w = v_8;
   w[int(1)] = v(64u);
   w[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 5fa39fa..34bb323 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -44,6 +44,6 @@
   float3x3 l_a[4] = v_3(0u);
   float3x3 l_a_i = v(v_7);
   float3 l_a_i_i = asfloat(a[((v_7 + v_8) / 16u)].xyz);
-  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 5fa39fa..34bb323 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -44,6 +44,6 @@
   float3x3 l_a[4] = v_3(0u);
   float3x3 l_a_i = v(v_7);
   float3 l_a_i_i = asfloat(a[((v_7 + v_8) / 16u)].xyz);
-  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 9dfd2ca..93c3111 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,6 +36,6 @@
   float3x3 l_a[4] = v_3(0u);
   float3x3 l_a_i = v(96u);
   float3 l_a_i_i = asfloat(a[7u].xyz);
-  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 9dfd2ca..93c3111 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,6 +36,6 @@
   float3x3 l_a[4] = v_3(0u);
   float3x3 l_a_i = v(96u);
   float3 l_a_i_i = asfloat(a[7u].xyz);
-  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 5d846b9..1950270 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,8 +13,8 @@
 void f() {
   float3x3 t = transpose(v(96u));
   float l = length(asfloat(u[1u].xyz).zxy);
-  float a = abs(asfloat(u[1u].xyz).zxy[0u]);
-  float v_3 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u].xyz).zxy.x);
+  float v_3 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_3 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 5d846b9..1950270 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,8 +13,8 @@
 void f() {
   float3x3 t = transpose(v(96u));
   float l = length(asfloat(u[1u].xyz).zxy);
-  float a = abs(asfloat(u[1u].xyz).zxy[0u]);
-  float v_3 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u].xyz).zxy.x);
+  float v_3 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_3 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index b935a2b..77810ed 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float3x3 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float3x3 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float3 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -53,6 +53,6 @@
   float v_9 = a(v_8);
   float v_10 = (v_9 + b(v_1(48u)));
   float v_11 = (v_10 + c(asfloat(u[3u].xyz).zxy));
-  s.Store(0u, asuint((v_11 + d(asfloat(u[3u].xyz).zxy[0u]))));
+  s.Store(0u, asuint((v_11 + d(asfloat(u[3u].xyz).zxy.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index b935a2b..77810ed 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float3x3 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float3x3 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float3 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -53,6 +53,6 @@
   float v_9 = a(v_8);
   float v_10 = (v_9 + b(v_1(48u)));
   float v_11 = (v_10 + c(asfloat(u[3u].xyz).zxy));
-  s.Store(0u, asuint((v_11 + d(asfloat(u[3u].xyz).zxy[0u]))));
+  s.Store(0u, asuint((v_11 + d(asfloat(u[3u].xyz).zxy.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 5591113..a69d774 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -38,7 +38,7 @@
   p = v_7;
   p[int(1)] = v(96u);
   p[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 5591113..a69d774 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -38,7 +38,7 @@
   p = v_7;
   p[int(1)] = v(96u);
   p[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 7027681..a412608 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -56,7 +56,7 @@
   w = v_9;
   w[int(1)] = v(96u);
   w[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 7027681..a412608 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -56,7 +56,7 @@
   w = v_9;
   w[int(1)] = v(96u);
   w[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index b8c2358..a420335 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -44,6 +44,6 @@
   float3x4 l_a[4] = v_3(0u);
   float3x4 l_a_i = v(v_7);
   float4 l_a_i_i = asfloat(a[((v_7 + v_8) / 16u)]);
-  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index b8c2358..a420335 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -44,6 +44,6 @@
   float3x4 l_a[4] = v_3(0u);
   float3x4 l_a_i = v(v_7);
   float4 l_a_i_i = asfloat(a[((v_7 + v_8) / 16u)]);
-  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_7 + v_8) / 16u)][(((v_7 + v_8) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index ae5c926..1bc2ae5 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,6 +36,6 @@
   float3x4 l_a[4] = v_3(0u);
   float3x4 l_a_i = v(96u);
   float4 l_a_i_i = asfloat(a[7u]);
-  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index ae5c926..1bc2ae5 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,6 +36,6 @@
   float3x4 l_a[4] = v_3(0u);
   float3x4 l_a_i = v(96u);
   float4 l_a_i_i = asfloat(a[7u]);
-  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[7u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 5f5d17b..c1c4ba1 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,8 +13,8 @@
 void f() {
   float4x3 t = transpose(v(96u));
   float l = length(asfloat(u[1u]).ywxz);
-  float a = abs(asfloat(u[1u]).ywxz[0u]);
-  float v_3 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u]).ywxz.x);
+  float v_3 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_3 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 5f5d17b..c1c4ba1 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,8 +13,8 @@
 void f() {
   float4x3 t = transpose(v(96u));
   float l = length(asfloat(u[1u]).ywxz);
-  float a = abs(asfloat(u[1u]).ywxz[0u]);
-  float v_3 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u]).ywxz.x);
+  float v_3 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_3 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 843b987..6576358 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float3x4 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float3x4 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float4 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -53,6 +53,6 @@
   float v_9 = a(v_8);
   float v_10 = (v_9 + b(v_1(48u)));
   float v_11 = (v_10 + c(asfloat(u[3u]).ywxz));
-  s.Store(0u, asuint((v_11 + d(asfloat(u[3u]).ywxz[0u]))));
+  s.Store(0u, asuint((v_11 + d(asfloat(u[3u]).ywxz.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 843b987..6576358 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float3x4 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float3x4 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float4 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -53,6 +53,6 @@
   float v_9 = a(v_8);
   float v_10 = (v_9 + b(v_1(48u)));
   float v_11 = (v_10 + c(asfloat(u[3u]).ywxz));
-  s.Store(0u, asuint((v_11 + d(asfloat(u[3u]).ywxz[0u]))));
+  s.Store(0u, asuint((v_11 + d(asfloat(u[3u]).ywxz.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 1a7fa81..ecfa91c 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -38,7 +38,7 @@
   p = v_7;
   p[int(1)] = v(96u);
   p[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 1a7fa81..ecfa91c 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -38,7 +38,7 @@
   p = v_7;
   p[int(1)] = v(96u);
   p[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 57a4eb0..d7c91e1 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -56,7 +56,7 @@
   w = v_9;
   w[int(1)] = v(96u);
   w[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 57a4eb0..d7c91e1 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -56,7 +56,7 @@
   w = v_9;
   w[int(1)] = v(96u);
   w[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 2e587dd..6920906 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -54,6 +54,6 @@
   matrix<float16_t, 4, 2> l_a_i = v_2(v_10);
   vector<float16_t, 2> l_a_i_i = tint_bitcast_to_f16(a[((v_10 + v_11) / 16u)][(((v_10 + v_11) % 16u) / 4u)]);
   uint v_12 = a[((v_10 + v_11) / 16u)][(((v_10 + v_11) % 16u) / 4u)];
-  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_12 >> (((((v_10 + v_11) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_12 >> (((((v_10 + v_11) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 4f68c21..d98a175 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -45,6 +45,6 @@
   matrix<float16_t, 4, 2> l_a[4] = v_6(0u);
   matrix<float16_t, 4, 2> l_a_i = v_2(32u);
   vector<float16_t, 2> l_a_i_i = tint_bitcast_to_f16(a[2u].y);
-  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[2u].y)) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[2u].y)) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index e2b11ba..d8308d8 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -22,8 +22,8 @@
 void f() {
   matrix<float16_t, 2, 4> t = transpose(v_2(32u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].y).yx);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].y).yx[0u]);
-  float16_t v_6 = (t[int(0)][0u] + float16_t(l));
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].y).yx.x);
+  float16_t v_6 = (t[int(0)].x + float16_t(l));
   s.Store<float16_t>(0u, (v_6 + float16_t(a)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 79d6e89..98aa43a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float16_t a(matrix<float16_t, 4, 2> a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float16_t b(matrix<float16_t, 4, 2> m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float16_t c(vector<float16_t, 2> v) {
-  return v[0u];
+  return v.x;
 }
 
 float16_t d(float16_t f_1) {
@@ -62,6 +62,6 @@
   float16_t v_11 = a(v_10);
   float16_t v_12 = (v_11 + b(v_2(16u)));
   float16_t v_13 = (v_12 + c(tint_bitcast_to_f16(u[1u].x).yx));
-  s.Store<float16_t>(0u, (v_13 + d(tint_bitcast_to_f16(u[1u].x).yx[0u])));
+  s.Store<float16_t>(0u, (v_13 + d(tint_bitcast_to_f16(u[1u].x).yx.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 33b85ad..860da1a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -47,7 +47,7 @@
   p = v_10;
   p[int(1)] = v_2(32u);
   p[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].y).yx;
-  p[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].y));
+  p[int(1)][int(0)].x = float16_t(f16tof32(u[0u].y));
   s.Store<float16_t>(0u, p[int(1)][int(0)].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 244df5e..3bd985a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -65,7 +65,7 @@
   w = v_12;
   w[int(1)] = v_2(32u);
   w[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].y).yx;
-  w[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].y));
+  w[int(1)][int(0)].x = float16_t(f16tof32(u[0u].y));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 760ec70..da3c5ac 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -50,6 +50,6 @@
   float4x2 l_a_i = v(v_12);
   uint4 v_14 = a[((v_12 + v_13) / 16u)];
   float2 l_a_i_i = asfloat(((((((v_12 + v_13) % 16u) / 4u) == 2u)) ? (v_14.zw) : (v_14.xy)));
-  s.Store(0u, asuint((((asfloat(a[((v_12 + v_13) / 16u)][(((v_12 + v_13) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_12 + v_13) / 16u)][(((v_12 + v_13) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 760ec70..da3c5ac 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -50,6 +50,6 @@
   float4x2 l_a_i = v(v_12);
   uint4 v_14 = a[((v_12 + v_13) / 16u)];
   float2 l_a_i_i = asfloat(((((((v_12 + v_13) % 16u) / 4u) == 2u)) ? (v_14.zw) : (v_14.xy)));
-  s.Store(0u, asuint((((asfloat(a[((v_12 + v_13) / 16u)][(((v_12 + v_13) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_12 + v_13) / 16u)][(((v_12 + v_13) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 26f9ef5..ba98fa2 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -41,6 +41,6 @@
   float4x2 l_a[4] = v_8(0u);
   float4x2 l_a_i = v(64u);
   float2 l_a_i_i = asfloat(a[4u].zw);
-  s.Store(0u, asuint((((asfloat(a[4u].z) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[4u].z) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 26f9ef5..ba98fa2 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -41,6 +41,6 @@
   float4x2 l_a[4] = v_8(0u);
   float4x2 l_a_i = v(64u);
   float2 l_a_i_i = asfloat(a[4u].zw);
-  s.Store(0u, asuint((((asfloat(a[4u].z) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[4u].z) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index d38d51d..44f8e74 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -18,8 +18,8 @@
 void f() {
   float2x4 t = transpose(v(64u));
   float l = length(asfloat(u[0u].zw).yx);
-  float a = abs(asfloat(u[0u].zw).yx[0u]);
-  float v_8 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[0u].zw).yx.x);
+  float v_8 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_8 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index d38d51d..44f8e74 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -18,8 +18,8 @@
 void f() {
   float2x4 t = transpose(v(64u));
   float l = length(asfloat(u[0u].zw).yx);
-  float a = abs(asfloat(u[0u].zw).yx[0u]);
-  float v_8 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[0u].zw).yx.x);
+  float v_8 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_8 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index ab8344d..196d194 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float4x2 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float4x2 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float2 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -58,6 +58,6 @@
   float v_14 = a(v_13);
   float v_15 = (v_14 + b(v_1(32u)));
   float v_16 = (v_15 + c(asfloat(u[2u].xy).yx));
-  s.Store(0u, asuint((v_16 + d(asfloat(u[2u].xy).yx[0u]))));
+  s.Store(0u, asuint((v_16 + d(asfloat(u[2u].xy).yx.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index ab8344d..196d194 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float4x2 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float4x2 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float2 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -58,6 +58,6 @@
   float v_14 = a(v_13);
   float v_15 = (v_14 + b(v_1(32u)));
   float v_16 = (v_15 + c(asfloat(u[2u].xy).yx));
-  s.Store(0u, asuint((v_16 + d(asfloat(u[2u].xy).yx[0u]))));
+  s.Store(0u, asuint((v_16 + d(asfloat(u[2u].xy).yx.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
index ff33492..9375f10 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -43,7 +43,7 @@
   p = v_12;
   p[int(1)] = v(64u);
   p[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  p[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  p[int(1)][int(0)].x = asfloat(u[0u].z);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
index ff33492..9375f10 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
   p = v_12;
   p[int(1)] = v(64u);
   p[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  p[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  p[int(1)][int(0)].x = asfloat(u[0u].z);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 1cea7c4..ae521c0 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -61,7 +61,7 @@
   w = v_14;
   w[int(1)] = v(64u);
   w[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  w[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  w[int(1)][int(0)].x = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 1cea7c4..ae521c0 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -61,7 +61,7 @@
   w = v_14;
   w[int(1)] = v(64u);
   w[int(1)][int(0)] = asfloat(u[0u].zw).yx;
-  w[int(1)][int(0)][0u] = asfloat(u[0u].z);
+  w[int(1)][int(0)].x = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index a400a1c..440d79f 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -63,6 +63,6 @@
   uint4 v_18 = a[((v_16 + v_17) / 16u)];
   vector<float16_t, 3> l_a_i_i = tint_bitcast_to_f16(((((((v_16 + v_17) % 16u) / 4u) == 2u)) ? (v_18.zw) : (v_18.xy))).xyz;
   uint v_19 = a[((v_16 + v_17) / 16u)][(((v_16 + v_17) % 16u) / 4u)];
-  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_19 >> (((((v_16 + v_17) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_19 >> (((((v_16 + v_17) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 7a1be2d..c1ee3f4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -53,6 +53,6 @@
   matrix<float16_t, 4, 3> l_a[4] = v_12(0u);
   matrix<float16_t, 4, 3> l_a_i = v_4(64u);
   vector<float16_t, 3> l_a_i_i = tint_bitcast_to_f16(a[4u].zw).xyz;
-  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[4u].z)) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[4u].z)) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 71c16e3..d3ddd8e 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -30,8 +30,8 @@
 void f() {
   matrix<float16_t, 3, 4> t = transpose(v_4(64u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).xyz.zxy);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).xyz.zxy[0u]);
-  float16_t v_12 = (t[int(0)][0u] + float16_t(l));
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).xyz.zxy.x);
+  float16_t v_12 = (t[int(0)].x + float16_t(l));
   s.Store<float16_t>(0u, (v_12 + float16_t(a)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 116b09a..12cc5f1 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float16_t a(matrix<float16_t, 4, 3> a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float16_t b(matrix<float16_t, 4, 3> m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float16_t c(vector<float16_t, 3> v) {
-  return v[0u];
+  return v.x;
 }
 
 float16_t d(float16_t f_1) {
@@ -70,6 +70,6 @@
   float16_t v_17 = a(v_16);
   float16_t v_18 = (v_17 + b(v_4(32u)));
   float16_t v_19 = (v_18 + c(tint_bitcast_to_f16(u[2u].xy).xyz.zxy));
-  s.Store<float16_t>(0u, (v_19 + d(tint_bitcast_to_f16(u[2u].xy).xyz.zxy[0u])));
+  s.Store<float16_t>(0u, (v_19 + d(tint_bitcast_to_f16(u[2u].xy).xyz.zxy.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 870ad8e..6aaadc7 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -55,7 +55,7 @@
   p = v_16;
   p[int(1)] = v_4(64u);
   p[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).xyz.zxy;
-  p[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  p[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
   s.Store<float16_t>(0u, p[int(1)][int(0)].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index b5e7ca9..f719909 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -73,7 +73,7 @@
   w = v_18;
   w[int(1)] = v_4(64u);
   w[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).xyz.zxy;
-  w[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  w[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 775d90b..6929bb3 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -45,6 +45,6 @@
   float4x3 l_a[4] = v_4(0u);
   float4x3 l_a_i = v(v_8);
   float3 l_a_i_i = asfloat(a[((v_8 + v_9) / 16u)].xyz);
-  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 775d90b..6929bb3 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -45,6 +45,6 @@
   float4x3 l_a[4] = v_4(0u);
   float4x3 l_a_i = v(v_8);
   float3 l_a_i_i = asfloat(a[((v_8 + v_9) / 16u)].xyz);
-  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 4478d35..208e962 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -37,6 +37,6 @@
   float4x3 l_a[4] = v_4(0u);
   float4x3 l_a_i = v(128u);
   float3 l_a_i_i = asfloat(a[9u].xyz);
-  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 4478d35..208e962 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -37,6 +37,6 @@
   float4x3 l_a[4] = v_4(0u);
   float4x3 l_a_i = v(128u);
   float3 l_a_i_i = asfloat(a[9u].xyz);
-  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 4d06fb7..be73d12 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -14,8 +14,8 @@
 void f() {
   float3x4 t = transpose(v(128u));
   float l = length(asfloat(u[1u].xyz).zxy);
-  float a = abs(asfloat(u[1u].xyz).zxy[0u]);
-  float v_4 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u].xyz).zxy.x);
+  float v_4 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_4 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 4d06fb7..be73d12 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -14,8 +14,8 @@
 void f() {
   float3x4 t = transpose(v(128u));
   float l = length(asfloat(u[1u].xyz).zxy);
-  float a = abs(asfloat(u[1u].xyz).zxy[0u]);
-  float v_4 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u].xyz).zxy.x);
+  float v_4 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_4 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 6799e52..55a30e4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float4x3 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float4x3 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float3 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -54,6 +54,6 @@
   float v_10 = a(v_9);
   float v_11 = (v_10 + b(v_1(64u)));
   float v_12 = (v_11 + c(asfloat(u[4u].xyz).zxy));
-  s.Store(0u, asuint((v_12 + d(asfloat(u[4u].xyz).zxy[0u]))));
+  s.Store(0u, asuint((v_12 + d(asfloat(u[4u].xyz).zxy.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 6799e52..55a30e4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float4x3 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float4x3 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float3 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -54,6 +54,6 @@
   float v_10 = a(v_9);
   float v_11 = (v_10 + b(v_1(64u)));
   float v_12 = (v_11 + c(asfloat(u[4u].xyz).zxy));
-  s.Store(0u, asuint((v_12 + d(asfloat(u[4u].xyz).zxy[0u]))));
+  s.Store(0u, asuint((v_12 + d(asfloat(u[4u].xyz).zxy.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 92648ea..b5a4ce9 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -39,7 +39,7 @@
   p = v_8;
   p[int(1)] = v(128u);
   p[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 92648ea..b5a4ce9 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -39,7 +39,7 @@
   p = v_8;
   p[int(1)] = v(128u);
   p[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index e7e7ec3..705149d 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -57,7 +57,7 @@
   w = v_10;
   w[int(1)] = v(128u);
   w[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index e7e7ec3..705149d 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -57,7 +57,7 @@
   w = v_10;
   w[int(1)] = v(128u);
   w[int(1)][int(0)] = asfloat(u[1u].xyz).zxy;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 807fc6b..da5c39b 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -63,6 +63,6 @@
   uint4 v_18 = a[((v_16 + v_17) / 16u)];
   vector<float16_t, 4> l_a_i_i = tint_bitcast_to_f16(((((((v_16 + v_17) % 16u) / 4u) == 2u)) ? (v_18.zw) : (v_18.xy)));
   uint v_19 = a[((v_16 + v_17) / 16u)][(((v_16 + v_17) % 16u) / 4u)];
-  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_19 >> (((((v_16 + v_17) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32((v_19 >> (((((v_16 + v_17) % 4u) == 0u)) ? (0u) : (16u))))) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index ad9de89..7c66a07 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -53,6 +53,6 @@
   matrix<float16_t, 4, 4> l_a[4] = v_12(0u);
   matrix<float16_t, 4, 4> l_a_i = v_4(64u);
   vector<float16_t, 4> l_a_i_i = tint_bitcast_to_f16(a[4u].zw);
-  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[4u].z)) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u]));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(a[4u].z)) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index e56fc8f..5c66616 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -30,8 +30,8 @@
 void f() {
   matrix<float16_t, 4, 4> t = transpose(v_4(64u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).ywxz);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).ywxz[0u]);
-  float16_t v_12 = (t[int(0)][0u] + float16_t(l));
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].zw).ywxz.x);
+  float16_t v_12 = (t[int(0)].x + float16_t(l));
   s.Store<float16_t>(0u, (v_12 + float16_t(a)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index dd082ae..69b09c9 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float16_t a(matrix<float16_t, 4, 4> a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float16_t b(matrix<float16_t, 4, 4> m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float16_t c(vector<float16_t, 4> v) {
-  return v[0u];
+  return v.x;
 }
 
 float16_t d(float16_t f_1) {
@@ -70,6 +70,6 @@
   float16_t v_17 = a(v_16);
   float16_t v_18 = (v_17 + b(v_4(32u)));
   float16_t v_19 = (v_18 + c(tint_bitcast_to_f16(u[2u].xy).ywxz));
-  s.Store<float16_t>(0u, (v_19 + d(tint_bitcast_to_f16(u[2u].xy).ywxz[0u])));
+  s.Store<float16_t>(0u, (v_19 + d(tint_bitcast_to_f16(u[2u].xy).ywxz.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
index a14d494..a83e0ae 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -55,7 +55,7 @@
   p = v_16;
   p[int(1)] = v_4(64u);
   p[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).ywxz;
-  p[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  p[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
   s.Store<float16_t>(0u, p[int(1)][int(0)].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 1ffe2af..83fdaa4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -73,7 +73,7 @@
   w = v_18;
   w[int(1)] = v_4(64u);
   w[int(1)][int(0)] = tint_bitcast_to_f16(u[0u].zw).ywxz;
-  w[int(1)][int(0)][0u] = float16_t(f16tof32(u[0u].z));
+  w[int(1)][int(0)].x = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 6f7f3e7..c048298 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -45,6 +45,6 @@
   float4x4 l_a[4] = v_4(0u);
   float4x4 l_a_i = v(v_8);
   float4 l_a_i_i = asfloat(a[((v_8 + v_9) / 16u)]);
-  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 6f7f3e7..c048298 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -45,6 +45,6 @@
   float4x4 l_a[4] = v_4(0u);
   float4x4 l_a_i = v(v_8);
   float4 l_a_i_i = asfloat(a[((v_8 + v_9) / 16u)]);
-  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[((v_8 + v_9) / 16u)][(((v_8 + v_9) % 16u) / 4u)]) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index f55a806..ad58e4a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -37,6 +37,6 @@
   float4x4 l_a[4] = v_4(0u);
   float4x4 l_a_i = v(128u);
   float4 l_a_i_i = asfloat(a[9u]);
-  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index f55a806..ad58e4a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -37,6 +37,6 @@
   float4x4 l_a[4] = v_4(0u);
   float4x4 l_a_i = v(128u);
   float4 l_a_i_i = asfloat(a[9u]);
-  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)][0u]) + l_a_i[int(0)][0u]) + l_a_i_i[0u])));
+  s.Store(0u, asuint((((asfloat(a[9u].x) + l_a[int(0)][int(0)].x) + l_a_i[int(0)].x) + l_a_i_i.x)));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 9c4fe64..f0d1398 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -14,8 +14,8 @@
 void f() {
   float4x4 t = transpose(v(128u));
   float l = length(asfloat(u[1u]).ywxz);
-  float a = abs(asfloat(u[1u]).ywxz[0u]);
-  float v_4 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u]).ywxz.x);
+  float v_4 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_4 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 9c4fe64..f0d1398 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -14,8 +14,8 @@
 void f() {
   float4x4 t = transpose(v(128u));
   float l = length(asfloat(u[1u]).ywxz);
-  float a = abs(asfloat(u[1u]).ywxz[0u]);
-  float v_4 = (t[int(0)][0u] + float(l));
+  float a = abs(asfloat(u[1u]).ywxz.x);
+  float v_4 = (t[int(0)].x + float(l));
   s.Store(0u, asuint((v_4 + float(a))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 1696d55..8f74825 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float4x4 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float4x4 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float4 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -54,6 +54,6 @@
   float v_10 = a(v_9);
   float v_11 = (v_10 + b(v_1(64u)));
   float v_12 = (v_11 + c(asfloat(u[4u]).ywxz));
-  s.Store(0u, asuint((v_12 + d(asfloat(u[4u]).ywxz[0u]))));
+  s.Store(0u, asuint((v_12 + d(asfloat(u[4u]).ywxz.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 1696d55..8f74825 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -4,15 +4,15 @@
 };
 RWByteAddressBuffer s : register(u1);
 float a(float4x4 a_1[4]) {
-  return a_1[int(0)][int(0)][0u];
+  return a_1[int(0)][int(0)].x;
 }
 
 float b(float4x4 m) {
-  return m[int(0)][0u];
+  return m[int(0)].x;
 }
 
 float c(float4 v) {
-  return v[0u];
+  return v.x;
 }
 
 float d(float f_1) {
@@ -54,6 +54,6 @@
   float v_10 = a(v_9);
   float v_11 = (v_10 + b(v_1(64u)));
   float v_12 = (v_11 + c(asfloat(u[4u]).ywxz));
-  s.Store(0u, asuint((v_12 + d(asfloat(u[4u]).ywxz[0u]))));
+  s.Store(0u, asuint((v_12 + d(asfloat(u[4u]).ywxz.x))));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 51f59ac..5310d96 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -39,7 +39,7 @@
   p = v_8;
   p[int(1)] = v(128u);
   p[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 51f59ac..5310d96 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -39,7 +39,7 @@
   p = v_8;
   p[int(1)] = v(128u);
   p[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  p[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  p[int(1)][int(0)].x = asfloat(u[1u].x);
   s.Store(0u, asuint(p[int(1)][int(0)].x));
 }
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 2ba25f8..cc6a835 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -57,7 +57,7 @@
   w = v_10;
   w[int(1)] = v(128u);
   w[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 2ba25f8..cc6a835 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -57,7 +57,7 @@
   w = v_10;
   w[int(1)] = v(128u);
   w[int(1)][int(0)] = asfloat(u[1u]).ywxz;
-  w[int(1)][int(0)][0u] = asfloat(u[1u].x);
+  w[int(1)][int(0)].x = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 07d74a6..cd3d58f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -19,6 +19,6 @@
 void f() {
   matrix<float16_t, 2, 2> t = transpose(v_2(260u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].z).yx);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].z).yx[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].z).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index f671a4a..d1c558c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -74,6 +74,6 @@
   b(v_14);
   c(v_2(260u));
   d(tint_bitcast_to_f16(u[0u].z).yx);
-  e(tint_bitcast_to_f16(u[0u].z).yx[0u]);
+  e(tint_bitcast_to_f16(u[0u].z).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index abcb520..bd31b5f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float2x2 t = transpose(v(264u));
   float l = length(asfloat(u[1u].xy).yx);
-  float a = abs(asfloat(u[1u].xy).yx[0u]);
+  float a = abs(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index abcb520..bd31b5f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float2x2 t = transpose(v(264u));
   float l = length(asfloat(u[1u].xy).yx);
-  float a = abs(asfloat(u[1u].xy).yx[0u]);
+  float a = abs(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 12ea459..36da692 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -68,6 +68,6 @@
   b(v_15);
   c(v_1(264u));
   d(asfloat(u[1u].xy).yx);
-  e(asfloat(u[1u].xy).yx[0u]);
+  e(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 12ea459..36da692 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -68,6 +68,6 @@
   b(v_15);
   c(v_1(264u));
   d(asfloat(u[1u].xy).yx);
-  e(asfloat(u[1u].xy).yx[0u]);
+  e(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 6c99e09..cca5aff 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -25,6 +25,6 @@
 void f() {
   matrix<float16_t, 3, 2> t = transpose(v_4(264u));
   float16_t l = length(tint_bitcast_to_f16(u[1u].xy).xyz.zxy);
-  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 9997f0b..f161ef2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -80,6 +80,6 @@
   b(v_18);
   c(v_4(264u));
   d(tint_bitcast_to_f16(u[1u].xy).xyz.zxy);
-  e(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u]);
+  e(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index fd9bc51..8dfbcb0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float3x2 t = transpose(v(272u));
   float l = length(asfloat(u[2u].xyz).zxy);
-  float a = abs(asfloat(u[2u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index fd9bc51..8dfbcb0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float3x2 t = transpose(v(272u));
   float l = length(asfloat(u[2u].xyz).zxy);
-  float a = abs(asfloat(u[2u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 624a306..41343c3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -66,6 +66,6 @@
   b(v_13);
   c(v_1(272u));
   d(asfloat(u[2u].xyz).zxy);
-  e(asfloat(u[2u].xyz).zxy[0u]);
+  e(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 624a306..41343c3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -66,6 +66,6 @@
   b(v_13);
   c(v_1(272u));
   d(asfloat(u[2u].xyz).zxy);
-  e(asfloat(u[2u].xyz).zxy[0u]);
+  e(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 049910f..265f590 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -25,6 +25,6 @@
 void f() {
   matrix<float16_t, 4, 2> t = transpose(v_4(264u));
   float16_t l = length(tint_bitcast_to_f16(u[1u].xy).ywxz);
-  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).ywxz[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 4e8560b..4ac3282 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -80,6 +80,6 @@
   b(v_18);
   c(v_4(264u));
   d(tint_bitcast_to_f16(u[1u].xy).ywxz);
-  e(tint_bitcast_to_f16(u[1u].xy).ywxz[0u]);
+  e(tint_bitcast_to_f16(u[1u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 9f3fa08..ab520e9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float4x2 t = transpose(v(272u));
   float l = length(asfloat(u[2u]).ywxz);
-  float a = abs(asfloat(u[2u]).ywxz[0u]);
+  float a = abs(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 9f3fa08..ab520e9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float4x2 t = transpose(v(272u));
   float l = length(asfloat(u[2u]).ywxz);
-  float a = abs(asfloat(u[2u]).ywxz[0u]);
+  float a = abs(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index dd81176..08bbe4c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -66,6 +66,6 @@
   b(v_13);
   c(v_1(272u));
   d(asfloat(u[2u]).ywxz);
-  e(asfloat(u[2u]).ywxz[0u]);
+  e(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index dd81176..08bbe4c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -66,6 +66,6 @@
   b(v_13);
   c(v_1(272u));
   d(asfloat(u[2u]).ywxz);
-  e(asfloat(u[2u]).ywxz[0u]);
+  e(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 2fdb486..befa6c5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -20,6 +20,6 @@
 void f() {
   matrix<float16_t, 2, 3> t = transpose(v_2(260u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].z).yx);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].z).yx[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].z).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 6f48fe7..aa29b1a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -75,6 +75,6 @@
   b(v_15);
   c(v_2(260u));
   d(tint_bitcast_to_f16(u[0u].z).yx);
-  e(tint_bitcast_to_f16(u[0u].z).yx[0u]);
+  e(tint_bitcast_to_f16(u[0u].z).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 19587ea..aef43db 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -15,6 +15,6 @@
 void f() {
   float2x3 t = transpose(v(264u));
   float l = length(asfloat(u[1u].xy).yx);
-  float a = abs(asfloat(u[1u].xy).yx[0u]);
+  float a = abs(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 19587ea..aef43db 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
 void f() {
   float2x3 t = transpose(v(264u));
   float l = length(asfloat(u[1u].xy).yx);
-  float a = abs(asfloat(u[1u].xy).yx[0u]);
+  float a = abs(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 1210e44..981fe2d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -70,6 +70,6 @@
   b(v_17);
   c(v_1(264u));
   d(asfloat(u[1u].xy).yx);
-  e(asfloat(u[1u].xy).yx[0u]);
+  e(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 1210e44..981fe2d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -70,6 +70,6 @@
   b(v_17);
   c(v_1(264u));
   d(asfloat(u[1u].xy).yx);
-  e(asfloat(u[1u].xy).yx[0u]);
+  e(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index fce01ba..0eb3a5a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -27,6 +27,6 @@
 void f() {
   matrix<float16_t, 3, 3> t = transpose(v_4(264u));
   float16_t l = length(tint_bitcast_to_f16(u[1u].xy).xyz.zxy);
-  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 50ded4f..ec7e7c6 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -82,6 +82,6 @@
   b(v_20);
   c(v_4(264u));
   d(tint_bitcast_to_f16(u[1u].xy).xyz.zxy);
-  e(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u]);
+  e(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 098d34b..93d9217 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float3x3 t = transpose(v(272u));
   float l = length(asfloat(u[2u].xyz).zxy);
-  float a = abs(asfloat(u[2u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 098d34b..93d9217 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float3x3 t = transpose(v(272u));
   float l = length(asfloat(u[2u].xyz).zxy);
-  float a = abs(asfloat(u[2u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index e426821..6f9e5d9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -67,6 +67,6 @@
   b(v_14);
   c(v_1(272u));
   d(asfloat(u[2u].xyz).zxy);
-  e(asfloat(u[2u].xyz).zxy[0u]);
+  e(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index e426821..6f9e5d9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -67,6 +67,6 @@
   b(v_14);
   c(v_1(272u));
   d(asfloat(u[2u].xyz).zxy);
-  e(asfloat(u[2u].xyz).zxy[0u]);
+  e(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 616a3b3..8e64ce9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -27,6 +27,6 @@
 void f() {
   matrix<float16_t, 4, 3> t = transpose(v_4(264u));
   float16_t l = length(tint_bitcast_to_f16(u[1u].xy).ywxz);
-  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).ywxz[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index fa58d06..c2dc074 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -82,6 +82,6 @@
   b(v_20);
   c(v_4(264u));
   d(tint_bitcast_to_f16(u[1u].xy).ywxz);
-  e(tint_bitcast_to_f16(u[1u].xy).ywxz[0u]);
+  e(tint_bitcast_to_f16(u[1u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 21a587f..adf79e7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float4x3 t = transpose(v(272u));
   float l = length(asfloat(u[2u]).ywxz);
-  float a = abs(asfloat(u[2u]).ywxz[0u]);
+  float a = abs(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 21a587f..adf79e7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float4x3 t = transpose(v(272u));
   float l = length(asfloat(u[2u]).ywxz);
-  float a = abs(asfloat(u[2u]).ywxz[0u]);
+  float a = abs(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 2c42947..cbc6bd5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -67,6 +67,6 @@
   b(v_14);
   c(v_1(272u));
   d(asfloat(u[2u]).ywxz);
-  e(asfloat(u[2u]).ywxz[0u]);
+  e(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 2c42947..cbc6bd5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -67,6 +67,6 @@
   b(v_14);
   c(v_1(272u));
   d(asfloat(u[2u]).ywxz);
-  e(asfloat(u[2u]).ywxz[0u]);
+  e(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 0e87102..8ccfa15 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -21,6 +21,6 @@
 void f() {
   matrix<float16_t, 2, 4> t = transpose(v_2(260u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].z).yx);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].z).yx[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].z).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 4d956b0..84b6496 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -76,6 +76,6 @@
   b(v_16);
   c(v_2(260u));
   d(tint_bitcast_to_f16(u[0u].z).yx);
-  e(tint_bitcast_to_f16(u[0u].z).yx[0u]);
+  e(tint_bitcast_to_f16(u[0u].z).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index bfa6396..8e54dac 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -17,6 +17,6 @@
 void f() {
   float2x4 t = transpose(v(264u));
   float l = length(asfloat(u[1u].xy).yx);
-  float a = abs(asfloat(u[1u].xy).yx[0u]);
+  float a = abs(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index bfa6396..8e54dac 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -17,6 +17,6 @@
 void f() {
   float2x4 t = transpose(v(264u));
   float l = length(asfloat(u[1u].xy).yx);
-  float a = abs(asfloat(u[1u].xy).yx[0u]);
+  float a = abs(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 77d9611..20415ba 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -72,6 +72,6 @@
   b(v_19);
   c(v_1(264u));
   d(asfloat(u[1u].xy).yx);
-  e(asfloat(u[1u].xy).yx[0u]);
+  e(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 77d9611..20415ba 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -72,6 +72,6 @@
   b(v_19);
   c(v_1(264u));
   d(asfloat(u[1u].xy).yx);
-  e(asfloat(u[1u].xy).yx[0u]);
+  e(asfloat(u[1u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index f9642ed..4988cc7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -29,6 +29,6 @@
 void f() {
   matrix<float16_t, 3, 4> t = transpose(v_4(264u));
   float16_t l = length(tint_bitcast_to_f16(u[1u].xy).xyz.zxy);
-  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 53303c6..3cc2b76 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -84,6 +84,6 @@
   b(v_22);
   c(v_4(264u));
   d(tint_bitcast_to_f16(u[1u].xy).xyz.zxy);
-  e(tint_bitcast_to_f16(u[1u].xy).xyz.zxy[0u]);
+  e(tint_bitcast_to_f16(u[1u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 713b011..7da4b988 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float3x4 t = transpose(v(400u));
   float l = length(asfloat(u[2u].xyz).zxy);
-  float a = abs(asfloat(u[2u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 713b011..7da4b988 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float3x4 t = transpose(v(400u));
   float l = length(asfloat(u[2u].xyz).zxy);
-  float a = abs(asfloat(u[2u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index a212808..c100dfe 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -68,6 +68,6 @@
   b(v_15);
   c(v_1(400u));
   d(asfloat(u[2u].xyz).zxy);
-  e(asfloat(u[2u].xyz).zxy[0u]);
+  e(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index a212808..c100dfe 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -68,6 +68,6 @@
   b(v_15);
   c(v_1(400u));
   d(asfloat(u[2u].xyz).zxy);
-  e(asfloat(u[2u].xyz).zxy[0u]);
+  e(asfloat(u[2u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 2c5d181..0d47177 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -29,6 +29,6 @@
 void f() {
   matrix<float16_t, 4, 4> t = transpose(v_4(264u));
   float16_t l = length(tint_bitcast_to_f16(u[1u].xy).ywxz);
-  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).ywxz[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[1u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 3f69c24..283cd6e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -84,6 +84,6 @@
   b(v_22);
   c(v_4(264u));
   d(tint_bitcast_to_f16(u[1u].xy).ywxz);
-  e(tint_bitcast_to_f16(u[1u].xy).ywxz[0u]);
+  e(tint_bitcast_to_f16(u[1u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 07ca238..7247765 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float4x4 t = transpose(v(400u));
   float l = length(asfloat(u[2u]).ywxz);
-  float a = abs(asfloat(u[2u]).ywxz[0u]);
+  float a = abs(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 07ca238..7247765 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float4x4 t = transpose(v(400u));
   float l = length(asfloat(u[2u]).ywxz);
-  float a = abs(asfloat(u[2u]).ywxz[0u]);
+  float a = abs(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 2a53685..45ad235 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -68,6 +68,6 @@
   b(v_15);
   c(v_1(400u));
   d(asfloat(u[2u]).ywxz);
-  e(asfloat(u[2u]).ywxz[0u]);
+  e(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 2a53685..45ad235 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -68,6 +68,6 @@
   b(v_15);
   c(v_1(400u));
   d(asfloat(u[2u]).ywxz);
-  e(asfloat(u[2u]).ywxz[0u]);
+  e(asfloat(u[2u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 517682e..e03519d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -19,6 +19,6 @@
 void f() {
   matrix<float16_t, 2, 2> t = transpose(v_2(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].y));
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].x).yx[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].x).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index d5fd370..c9f9f14 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -30,6 +30,6 @@
   b(tint_bitcast_to_f16(u[0u].y));
   b(tint_bitcast_to_f16(u[0u].y).yx);
   c(float16_t(f16tof32(u[0u].y)));
-  c(tint_bitcast_to_f16(u[0u].y).yx[0u]);
+  c(tint_bitcast_to_f16(u[0u].y).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 0263d20..fb051f7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -21,6 +21,6 @@
   p = v_2(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].x);
   p[int(1)] = tint_bitcast_to_f16(u[0u].x).yx;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].y));
+  p[int(0)].y = float16_t(f16tof32(u[0u].y));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 82e1256..7867503 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -28,7 +28,7 @@
   w = v_2(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].x);
   w[int(1)] = tint_bitcast_to_f16(u[0u].x).yx;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].y));
+  w[int(0)].y = float16_t(f16tof32(u[0u].y));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 425c3d7..e25e90c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float2x2 t = transpose(v(0u));
   float l = length(asfloat(u[0u].zw));
-  float a = abs(asfloat(u[0u].xy).yx[0u]);
+  float a = abs(asfloat(u[0u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 425c3d7..e25e90c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float2x2 t = transpose(v(0u));
   float l = length(asfloat(u[0u].zw));
-  float a = abs(asfloat(u[0u].xy).yx[0u]);
+  float a = abs(asfloat(u[0u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 98b6c06..aad0235 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -24,6 +24,6 @@
   b(asfloat(u[0u].zw));
   b(asfloat(u[0u].zw).yx);
   c(asfloat(u[0u].z));
-  c(asfloat(u[0u].zw).yx[0u]);
+  c(asfloat(u[0u].zw).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 98b6c06..aad0235 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -24,6 +24,6 @@
   b(asfloat(u[0u].zw));
   b(asfloat(u[0u].zw).yx);
   c(asfloat(u[0u].z));
-  c(asfloat(u[0u].zw).yx[0u]);
+  c(asfloat(u[0u].zw).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 1423253..eddce4f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -15,6 +15,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xy);
   p[int(1)] = asfloat(u[0u].xy).yx;
-  p[int(0)][int(1)] = asfloat(u[0u].z);
+  p[int(0)].y = asfloat(u[0u].z);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 1423253..eddce4f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xy);
   p[int(1)] = asfloat(u[0u].xy).yx;
-  p[int(0)][int(1)] = asfloat(u[0u].z);
+  p[int(0)].y = asfloat(u[0u].z);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 4e56109..827c388 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -22,7 +22,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xy);
   w[int(1)] = asfloat(u[0u].xy).yx;
-  w[int(0)][int(1)] = asfloat(u[0u].z);
+  w[int(0)].y = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 4e56109..827c388 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -22,7 +22,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xy);
   w[int(1)] = asfloat(u[0u].xy).yx;
-  w[int(0)][int(1)] = asfloat(u[0u].z);
+  w[int(0)].y = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 9f8a1bf..94eb27e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -25,6 +25,6 @@
 void f() {
   matrix<float16_t, 3, 2> t = transpose(v_4(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).xyz);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index f4049ee..3c349cc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -36,6 +36,6 @@
   b(tint_bitcast_to_f16(u[0u].zw).xyz);
   b(tint_bitcast_to_f16(u[0u].zw).xyz.zxy);
   c(float16_t(f16tof32(u[0u].z)));
-  c(tint_bitcast_to_f16(u[0u].zw).xyz.zxy[0u]);
+  c(tint_bitcast_to_f16(u[0u].zw).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 6c2d9af..559c0c1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -27,6 +27,6 @@
   p = v_4(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz;
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz.zxy;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  p[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 40f141a..ba64100 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -34,7 +34,7 @@
   w = v_4(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz;
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz.zxy;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  w[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index c9b9d85..e296f0a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float3x2 t = transpose(v(0u));
   float l = length(asfloat(u[1u].xyz));
-  float a = abs(asfloat(u[0u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[0u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index c9b9d85..e296f0a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float3x2 t = transpose(v(0u));
   float l = length(asfloat(u[1u].xyz));
-  float a = abs(asfloat(u[0u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[0u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 039afd1..245eb48 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -22,6 +22,6 @@
   b(asfloat(u[1u].xyz));
   b(asfloat(u[1u].xyz).zxy);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u].xyz).zxy[0u]);
+  c(asfloat(u[1u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 039afd1..245eb48 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -22,6 +22,6 @@
   b(asfloat(u[1u].xyz));
   b(asfloat(u[1u].xyz).zxy);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u].xyz).zxy[0u]);
+  c(asfloat(u[1u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 9a3c3ab..582620d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xyz);
   p[int(1)] = asfloat(u[0u].xyz).zxy;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 9a3c3ab..582620d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xyz);
   p[int(1)] = asfloat(u[0u].xyz).zxy;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 156f3a7..0dcd1ba 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -20,7 +20,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xyz);
   w[int(1)] = asfloat(u[0u].xyz).zxy;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 156f3a7..0dcd1ba 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -20,7 +20,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xyz);
   w[int(1)] = asfloat(u[0u].xyz).zxy;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index a1140ac..8a4774e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -25,6 +25,6 @@
 void f() {
   matrix<float16_t, 4, 2> t = transpose(v_4(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw));
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).ywxz[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index ce7990e..e5652ea 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -36,6 +36,6 @@
   b(tint_bitcast_to_f16(u[0u].zw));
   b(tint_bitcast_to_f16(u[0u].zw).ywxz);
   c(float16_t(f16tof32(u[0u].z)));
-  c(tint_bitcast_to_f16(u[0u].zw).ywxz[0u]);
+  c(tint_bitcast_to_f16(u[0u].zw).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 2c4fc3f..bc98dfa 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -27,6 +27,6 @@
   p = v_4(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).ywxz;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  p[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index ea4d4fc..2005ad4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -34,7 +34,7 @@
   w = v_4(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).ywxz;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  w[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 9666077..afe937c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float4x2 t = transpose(v(0u));
   float l = length(asfloat(u[1u]));
-  float a = abs(asfloat(u[0u]).ywxz[0u]);
+  float a = abs(asfloat(u[0u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 9666077..afe937c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 void f() {
   float4x2 t = transpose(v(0u));
   float l = length(asfloat(u[1u]));
-  float a = abs(asfloat(u[0u]).ywxz[0u]);
+  float a = abs(asfloat(u[0u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index c4df9d1..115d90d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -22,6 +22,6 @@
   b(asfloat(u[1u]));
   b(asfloat(u[1u]).ywxz);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u]).ywxz[0u]);
+  c(asfloat(u[1u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index c4df9d1..115d90d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -22,6 +22,6 @@
   b(asfloat(u[1u]));
   b(asfloat(u[1u]).ywxz);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u]).ywxz[0u]);
+  c(asfloat(u[1u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 3d187c6..d245cc6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u]);
   p[int(1)] = asfloat(u[0u]).ywxz;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 3d187c6..d245cc6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u]);
   p[int(1)] = asfloat(u[0u]).ywxz;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index c503efe..efa3a40 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -20,7 +20,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u]);
   w[int(1)] = asfloat(u[0u]).ywxz;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index c503efe..efa3a40 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -20,7 +20,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u]);
   w[int(1)] = asfloat(u[0u]).ywxz;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index bea0080..47fbee0 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -20,6 +20,6 @@
 void f() {
   matrix<float16_t, 2, 3> t = transpose(v_2(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].y));
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].x).yx[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].x).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 7202053..6d6f02f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -31,6 +31,6 @@
   b(tint_bitcast_to_f16(u[0u].y));
   b(tint_bitcast_to_f16(u[0u].y).yx);
   c(float16_t(f16tof32(u[0u].y)));
-  c(tint_bitcast_to_f16(u[0u].y).yx[0u]);
+  c(tint_bitcast_to_f16(u[0u].y).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 22399a0..95c273a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -22,6 +22,6 @@
   p = v_2(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].x);
   p[int(1)] = tint_bitcast_to_f16(u[0u].x).yx;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].y));
+  p[int(0)].y = float16_t(f16tof32(u[0u].y));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 78eacd2..0a226c8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -29,7 +29,7 @@
   w = v_2(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].x);
   w[int(1)] = tint_bitcast_to_f16(u[0u].x).yx;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].y));
+  w[int(0)].y = float16_t(f16tof32(u[0u].y));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 24a3e47..29fa351 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -15,6 +15,6 @@
 void f() {
   float2x3 t = transpose(v(0u));
   float l = length(asfloat(u[0u].zw));
-  float a = abs(asfloat(u[0u].xy).yx[0u]);
+  float a = abs(asfloat(u[0u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 24a3e47..29fa351 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
 void f() {
   float2x3 t = transpose(v(0u));
   float l = length(asfloat(u[0u].zw));
-  float a = abs(asfloat(u[0u].xy).yx[0u]);
+  float a = abs(asfloat(u[0u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index bac5acc..11ef92e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -26,6 +26,6 @@
   b(asfloat(u[0u].zw));
   b(asfloat(u[0u].zw).yx);
   c(asfloat(u[0u].z));
-  c(asfloat(u[0u].zw).yx[0u]);
+  c(asfloat(u[0u].zw).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index bac5acc..11ef92e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -26,6 +26,6 @@
   b(asfloat(u[0u].zw));
   b(asfloat(u[0u].zw).yx);
   c(asfloat(u[0u].z));
-  c(asfloat(u[0u].zw).yx[0u]);
+  c(asfloat(u[0u].zw).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
index be5216c..100e3ee 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -17,6 +17,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xy);
   p[int(1)] = asfloat(u[0u].xy).yx;
-  p[int(0)][int(1)] = asfloat(u[0u].z);
+  p[int(0)].y = asfloat(u[0u].z);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
index be5216c..100e3ee 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -17,6 +17,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xy);
   p[int(1)] = asfloat(u[0u].xy).yx;
-  p[int(0)][int(1)] = asfloat(u[0u].z);
+  p[int(0)].y = asfloat(u[0u].z);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index d3698ab..3803dfd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -24,7 +24,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xy);
   w[int(1)] = asfloat(u[0u].xy).yx;
-  w[int(0)][int(1)] = asfloat(u[0u].z);
+  w[int(0)].y = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index d3698ab..3803dfd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -24,7 +24,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xy);
   w[int(1)] = asfloat(u[0u].xy).yx;
-  w[int(0)][int(1)] = asfloat(u[0u].z);
+  w[int(0)].y = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 0ca6228..adeb2b6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -27,6 +27,6 @@
 void f() {
   matrix<float16_t, 3, 3> t = transpose(v_4(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).xyz);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index e01b446..22d901f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -38,6 +38,6 @@
   b(tint_bitcast_to_f16(u[0u].zw).xyz);
   b(tint_bitcast_to_f16(u[0u].zw).xyz.zxy);
   c(float16_t(f16tof32(u[0u].z)));
-  c(tint_bitcast_to_f16(u[0u].zw).xyz.zxy[0u]);
+  c(tint_bitcast_to_f16(u[0u].zw).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 1b9e1ad..ebaf8bc2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -29,6 +29,6 @@
   p = v_4(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz;
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz.zxy;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  p[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index ea70e29..8858722 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -36,7 +36,7 @@
   w = v_4(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz;
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz.zxy;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  w[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index b5212f1..43edf47 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float3x3 t = transpose(v(0u));
   float l = length(asfloat(u[1u].xyz));
-  float a = abs(asfloat(u[0u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[0u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index b5212f1..43edf47 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float3x3 t = transpose(v(0u));
   float l = length(asfloat(u[1u].xyz));
-  float a = abs(asfloat(u[0u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[0u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index dae370b..5d24420 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -23,6 +23,6 @@
   b(asfloat(u[1u].xyz));
   b(asfloat(u[1u].xyz).zxy);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u].xyz).zxy[0u]);
+  c(asfloat(u[1u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index dae370b..5d24420 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -23,6 +23,6 @@
   b(asfloat(u[1u].xyz));
   b(asfloat(u[1u].xyz).zxy);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u].xyz).zxy[0u]);
+  c(asfloat(u[1u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
index f6e43b6..911dded 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -14,6 +14,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xyz);
   p[int(1)] = asfloat(u[0u].xyz).zxy;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
index f6e43b6..911dded 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -14,6 +14,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xyz);
   p[int(1)] = asfloat(u[0u].xyz).zxy;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 939b99c..beead4c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -21,7 +21,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xyz);
   w[int(1)] = asfloat(u[0u].xyz).zxy;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 939b99c..beead4c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -21,7 +21,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xyz);
   w[int(1)] = asfloat(u[0u].xyz).zxy;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 74ce9ac..3418f1f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -27,6 +27,6 @@
 void f() {
   matrix<float16_t, 4, 3> t = transpose(v_4(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw));
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).ywxz[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index e4bbd92..304d8c9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -38,6 +38,6 @@
   b(tint_bitcast_to_f16(u[0u].zw));
   b(tint_bitcast_to_f16(u[0u].zw).ywxz);
   c(float16_t(f16tof32(u[0u].z)));
-  c(tint_bitcast_to_f16(u[0u].zw).ywxz[0u]);
+  c(tint_bitcast_to_f16(u[0u].zw).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 08af1bb..a2d2a14 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -29,6 +29,6 @@
   p = v_4(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).ywxz;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  p[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 52cbac1..ab242b4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -36,7 +36,7 @@
   w = v_4(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).ywxz;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  w[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 5a5673a..f75ca45 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float4x3 t = transpose(v(0u));
   float l = length(asfloat(u[1u]));
-  float a = abs(asfloat(u[0u]).ywxz[0u]);
+  float a = abs(asfloat(u[0u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 5a5673a..f75ca45 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -12,6 +12,6 @@
 void f() {
   float4x3 t = transpose(v(0u));
   float l = length(asfloat(u[1u]));
-  float a = abs(asfloat(u[0u]).ywxz[0u]);
+  float a = abs(asfloat(u[0u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 6dec87f..c268c20 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -23,6 +23,6 @@
   b(asfloat(u[1u]));
   b(asfloat(u[1u]).ywxz);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u]).ywxz[0u]);
+  c(asfloat(u[1u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 6dec87f..c268c20 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -23,6 +23,6 @@
   b(asfloat(u[1u]));
   b(asfloat(u[1u]).ywxz);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u]).ywxz[0u]);
+  c(asfloat(u[1u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
index a366aab..3edad22 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -14,6 +14,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u]);
   p[int(1)] = asfloat(u[0u]).ywxz;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
index a366aab..3edad22 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -14,6 +14,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u]);
   p[int(1)] = asfloat(u[0u]).ywxz;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 6ae66c3..484287c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -21,7 +21,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u]);
   w[int(1)] = asfloat(u[0u]).ywxz;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 6ae66c3..484287c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -21,7 +21,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u]);
   w[int(1)] = asfloat(u[0u]).ywxz;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index 7424c44..cbaf3b9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -21,6 +21,6 @@
 void f() {
   matrix<float16_t, 2, 4> t = transpose(v_2(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].y));
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].x).yx[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].x).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index a9c6093..29bdaf3 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -32,6 +32,6 @@
   b(tint_bitcast_to_f16(u[0u].y));
   b(tint_bitcast_to_f16(u[0u].y).yx);
   c(float16_t(f16tof32(u[0u].y)));
-  c(tint_bitcast_to_f16(u[0u].y).yx[0u]);
+  c(tint_bitcast_to_f16(u[0u].y).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 21d6939..5a108b9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -23,6 +23,6 @@
   p = v_2(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].x);
   p[int(1)] = tint_bitcast_to_f16(u[0u].x).yx;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].y));
+  p[int(0)].y = float16_t(f16tof32(u[0u].y));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 3610678..36cc521 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -30,7 +30,7 @@
   w = v_2(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].x);
   w[int(1)] = tint_bitcast_to_f16(u[0u].x).yx;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].y));
+  w[int(0)].y = float16_t(f16tof32(u[0u].y));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index cf138ff..a4094c9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -17,6 +17,6 @@
 void f() {
   float2x4 t = transpose(v(0u));
   float l = length(asfloat(u[0u].zw));
-  float a = abs(asfloat(u[0u].xy).yx[0u]);
+  float a = abs(asfloat(u[0u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index cf138ff..a4094c9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -17,6 +17,6 @@
 void f() {
   float2x4 t = transpose(v(0u));
   float l = length(asfloat(u[0u].zw));
-  float a = abs(asfloat(u[0u].xy).yx[0u]);
+  float a = abs(asfloat(u[0u].xy).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index dcfda7d..2d26754 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -28,6 +28,6 @@
   b(asfloat(u[0u].zw));
   b(asfloat(u[0u].zw).yx);
   c(asfloat(u[0u].z));
-  c(asfloat(u[0u].zw).yx[0u]);
+  c(asfloat(u[0u].zw).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index dcfda7d..2d26754 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -28,6 +28,6 @@
   b(asfloat(u[0u].zw));
   b(asfloat(u[0u].zw).yx);
   c(asfloat(u[0u].z));
-  c(asfloat(u[0u].zw).yx[0u]);
+  c(asfloat(u[0u].zw).yx.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 74b0909..966eb00 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -19,6 +19,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xy);
   p[int(1)] = asfloat(u[0u].xy).yx;
-  p[int(0)][int(1)] = asfloat(u[0u].z);
+  p[int(0)].y = asfloat(u[0u].z);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 74b0909..966eb00 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -19,6 +19,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xy);
   p[int(1)] = asfloat(u[0u].xy).yx;
-  p[int(0)][int(1)] = asfloat(u[0u].z);
+  p[int(0)].y = asfloat(u[0u].z);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index ffff971..02f437e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -26,7 +26,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xy);
   w[int(1)] = asfloat(u[0u].xy).yx;
-  w[int(0)][int(1)] = asfloat(u[0u].z);
+  w[int(0)].y = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index ffff971..02f437e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -26,7 +26,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xy);
   w[int(1)] = asfloat(u[0u].xy).yx;
-  w[int(0)][int(1)] = asfloat(u[0u].z);
+  w[int(0)].y = asfloat(u[0u].z);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index af8b645..8aefe22 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -29,6 +29,6 @@
 void f() {
   matrix<float16_t, 3, 4> t = transpose(v_4(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw).xyz);
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).xyz.zxy[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index ae09940..0579926 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -40,6 +40,6 @@
   b(tint_bitcast_to_f16(u[0u].zw).xyz);
   b(tint_bitcast_to_f16(u[0u].zw).xyz.zxy);
   c(float16_t(f16tof32(u[0u].z)));
-  c(tint_bitcast_to_f16(u[0u].zw).xyz.zxy[0u]);
+  c(tint_bitcast_to_f16(u[0u].zw).xyz.zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
index a2d73a3..e694825 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -31,6 +31,6 @@
   p = v_4(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz;
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz.zxy;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  p[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 6437200..645f61f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -38,7 +38,7 @@
   w = v_4(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz;
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).xyz.zxy;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  w[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index ce68f0e..68410ae 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float3x4 t = transpose(v(0u));
   float l = length(asfloat(u[1u].xyz));
-  float a = abs(asfloat(u[0u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[0u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index ce68f0e..68410ae 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float3x4 t = transpose(v(0u));
   float l = length(asfloat(u[1u].xyz));
-  float a = abs(asfloat(u[0u].xyz).zxy[0u]);
+  float a = abs(asfloat(u[0u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index 95173b0..13fb969 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -24,6 +24,6 @@
   b(asfloat(u[1u].xyz));
   b(asfloat(u[1u].xyz).zxy);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u].xyz).zxy[0u]);
+  c(asfloat(u[1u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index 95173b0..13fb969 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -24,6 +24,6 @@
   b(asfloat(u[1u].xyz));
   b(asfloat(u[1u].xyz).zxy);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u].xyz).zxy[0u]);
+  c(asfloat(u[1u].xyz).zxy.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
index 235ff1d..e837eb5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -15,6 +15,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xyz);
   p[int(1)] = asfloat(u[0u].xyz).zxy;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
index 235ff1d..e837eb5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u].xyz);
   p[int(1)] = asfloat(u[0u].xyz).zxy;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index df729eb..e7293dc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -22,7 +22,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xyz);
   w[int(1)] = asfloat(u[0u].xyz).zxy;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index df729eb..e7293dc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -22,7 +22,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u].xyz);
   w[int(1)] = asfloat(u[0u].xyz).zxy;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
index d9b1d10..a614caa 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -29,6 +29,6 @@
 void f() {
   matrix<float16_t, 4, 4> t = transpose(v_4(0u));
   float16_t l = length(tint_bitcast_to_f16(u[0u].zw));
-  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).ywxz[0u]);
+  float16_t a = abs(tint_bitcast_to_f16(u[0u].xy).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
index 61d3db3..bfe117c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -40,6 +40,6 @@
   b(tint_bitcast_to_f16(u[0u].zw));
   b(tint_bitcast_to_f16(u[0u].zw).ywxz);
   c(float16_t(f16tof32(u[0u].z)));
-  c(tint_bitcast_to_f16(u[0u].zw).ywxz[0u]);
+  c(tint_bitcast_to_f16(u[0u].zw).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
index 6105a3c..3730805 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.dxc.hlsl
@@ -31,6 +31,6 @@
   p = v_4(0u);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy);
   p[int(1)] = tint_bitcast_to_f16(u[0u].xy).ywxz;
-  p[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  p[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 710f562..2cff1e1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -38,7 +38,7 @@
   w = v_4(0u);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy);
   w[int(1)] = tint_bitcast_to_f16(u[0u].xy).ywxz;
-  w[int(0)][int(1)] = float16_t(f16tof32(u[0u].z));
+  w[int(0)].y = float16_t(f16tof32(u[0u].z));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
index 57693e34..bd02195 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.dxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float4x4 t = transpose(v(0u));
   float l = length(asfloat(u[1u]));
-  float a = abs(asfloat(u[0u]).ywxz[0u]);
+  float a = abs(asfloat(u[0u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
index 57693e34..bd02195 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 void f() {
   float4x4 t = transpose(v(0u));
   float l = length(asfloat(u[1u]));
-  float a = abs(asfloat(u[0u]).ywxz[0u]);
+  float a = abs(asfloat(u[0u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
index c9c59d6..a2deccc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.dxc.hlsl
@@ -24,6 +24,6 @@
   b(asfloat(u[1u]));
   b(asfloat(u[1u]).ywxz);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u]).ywxz[0u]);
+  c(asfloat(u[1u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
index c9c59d6..a2deccc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -24,6 +24,6 @@
   b(asfloat(u[1u]));
   b(asfloat(u[1u]).ywxz);
   c(asfloat(u[1u].x));
-  c(asfloat(u[1u]).ywxz[0u]);
+  c(asfloat(u[1u]).ywxz.x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
index a447906..c6aff1a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.dxc.hlsl
@@ -15,6 +15,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u]);
   p[int(1)] = asfloat(u[0u]).ywxz;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
index a447906..c6aff1a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
   p = v(0u);
   p[int(1)] = asfloat(u[0u]);
   p[int(1)] = asfloat(u[0u]).ywxz;
-  p[int(0)][int(1)] = asfloat(u[1u].x);
+  p[int(0)].y = asfloat(u[1u].x);
 }
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
index 42248d0..a3908b8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.dxc.hlsl
@@ -22,7 +22,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u]);
   w[int(1)] = asfloat(u[0u]).ywxz;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 42248d0..a3908b8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -22,7 +22,7 @@
   w = v(0u);
   w[int(1)] = asfloat(u[0u]);
   w[int(1)] = asfloat(u[0u]).ywxz;
-  w[int(0)][int(1)] = asfloat(u[1u].x);
+  w[int(0)].y = asfloat(u[1u].x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/chromium/1273230.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/chromium/1273230.wgsl.expected.ir.dxc.hlsl
index b6cc365b..c912907 100644
--- a/test/tint/bug/chromium/1273230.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.ir.dxc.hlsl
@@ -26,13 +26,13 @@
   float cubeSize = max(v_4, bbSize.z);
   float gridSize = float(uniforms[0u].y);
   float v_5 = cubeSize;
-  float v_6 = (v_5 * (position[0u] - asfloat(uniforms[1u].x)));
+  float v_6 = (v_5 * (position.x - asfloat(uniforms[1u].x)));
   float gx = (v_6 / cubeSize);
   float v_7 = gx;
-  float v_8 = (v_7 * (position[1u] - asfloat(uniforms[1u].y)));
+  float v_8 = (v_7 * (position.y - asfloat(uniforms[1u].y)));
   float gy = (v_8 / gridSize);
   float v_9 = gridSize;
-  float v_10 = (v_9 * (position[2u] - asfloat(uniforms[1u].z)));
+  float v_10 = (v_9 * (position.z - asfloat(uniforms[1u].z)));
   float gz = (v_10 / gridSize);
   return float3(gz, gz, gz);
 }
@@ -83,7 +83,7 @@
 }
 
 void main_count_inner(uint3 GlobalInvocationID) {
-  uint triangleIndex = GlobalInvocationID[0u];
+  uint triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms[0u].x)) {
     return;
   }
diff --git a/test/tint/bug/chromium/1273230.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/chromium/1273230.wgsl.expected.ir.fxc.hlsl
index b6cc365b..c912907 100644
--- a/test/tint/bug/chromium/1273230.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/chromium/1273230.wgsl.expected.ir.fxc.hlsl
@@ -26,13 +26,13 @@
   float cubeSize = max(v_4, bbSize.z);
   float gridSize = float(uniforms[0u].y);
   float v_5 = cubeSize;
-  float v_6 = (v_5 * (position[0u] - asfloat(uniforms[1u].x)));
+  float v_6 = (v_5 * (position.x - asfloat(uniforms[1u].x)));
   float gx = (v_6 / cubeSize);
   float v_7 = gx;
-  float v_8 = (v_7 * (position[1u] - asfloat(uniforms[1u].y)));
+  float v_8 = (v_7 * (position.y - asfloat(uniforms[1u].y)));
   float gy = (v_8 / gridSize);
   float v_9 = gridSize;
-  float v_10 = (v_9 * (position[2u] - asfloat(uniforms[1u].z)));
+  float v_10 = (v_9 * (position.z - asfloat(uniforms[1u].z)));
   float gz = (v_10 / gridSize);
   return float3(gz, gz, gz);
 }
@@ -83,7 +83,7 @@
 }
 
 void main_count_inner(uint3 GlobalInvocationID) {
-  uint triangleIndex = GlobalInvocationID[0u];
+  uint triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms[0u].x)) {
     return;
   }
diff --git a/test/tint/bug/chromium/1386647.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/chromium/1386647.wgsl.expected.ir.dxc.hlsl
index 756fb50..671a5e2 100644
--- a/test/tint/bug/chromium/1386647.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/chromium/1386647.wgsl.expected.ir.dxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 void f_inner(uint3 v) {
-  uint l = (v[0u] << (tint_mod_u32(v[1u], 1u) & 31u));
+  uint l = (v.x << (tint_mod_u32(v.y, 1u) & 31u));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/chromium/1386647.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/chromium/1386647.wgsl.expected.ir.fxc.hlsl
index 756fb50..671a5e2 100644
--- a/test/tint/bug/chromium/1386647.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/chromium/1386647.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 void f_inner(uint3 v) {
-  uint l = (v[0u] << (tint_mod_u32(v[1u], 1u) & 31u));
+  uint l = (v.x << (tint_mod_u32(v.y, 1u) & 31u));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/chromium/1434271.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/chromium/1434271.wgsl.expected.ir.dxc.hlsl
index 4550e4c..d7b7cd5 100644
--- a/test/tint/bug/chromium/1434271.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/chromium/1434271.wgsl.expected.ir.dxc.hlsl
@@ -117,7 +117,7 @@
   float2 v_14 = asfloat(sim_params[1u]).xy;
   float2 v_15 = (v_14 * float2(GlobalInvocationID.xy));
   rand_seed = (v_15 * asfloat(sim_params[1u]).zw);
-  uint idx = GlobalInvocationID[0u];
+  uint idx = GlobalInvocationID.x;
   Particle particle = v_9((0u + (uint(idx) * 48u)));
   uint v_16 = (uint(idx) * 48u);
   Particle v_17 = particle;
@@ -126,10 +126,10 @@
 
 void export_level_inner(uint3 coord) {
   uint2 v_18 = (0u).xx;
-  tex_out.GetDimensions(v_18[0u], v_18[1u]);
+  tex_out.GetDimensions(v_18.x, v_18.y);
   if (all((coord.xy < uint2(v_18)))) {
-    uint dst_offset = (coord[0u] << ((coord[1u] * ubo[0u].x) & 31u));
-    uint src_offset = ((coord[0u] - 2u) + ((coord[1u] >> (2u & 31u)) * ubo[0u].x));
+    uint dst_offset = (coord.x << ((coord.y * ubo[0u].x) & 31u));
+    uint src_offset = ((coord.x - 2u) + ((coord.y >> (2u & 31u)) * ubo[0u].x));
     float a = asfloat(buf_in.Load((0u + (uint((src_offset << (0u & 31u))) * 4u))));
     float b = asfloat(buf_in.Load((0u + (uint((src_offset + 1u)) * 4u))));
     float c = asfloat(buf_in.Load((0u + (uint(((src_offset + 1u) + ubo[0u].x)) * 4u))));
diff --git a/test/tint/bug/chromium/378541479.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/chromium/378541479.wgsl.expected.ir.dxc.hlsl
index 72b8b84..d108164 100644
--- a/test/tint/bug/chromium/378541479.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/chromium/378541479.wgsl.expected.ir.dxc.hlsl
@@ -11,10 +11,10 @@
   uint2 v = coords[0u].xy;
   uint v_1 = level[0u].x;
   uint3 v_2 = (0u).xxx;
-  tex.GetDimensions(0u, v_2[0u], v_2[1u], v_2[2u]);
+  tex.GetDimensions(0u, v_2.x, v_2.y, v_2.z);
   uint v_3 = min(v_1, (v_2.z - 1u));
   uint3 v_4 = (0u).xxx;
-  tex.GetDimensions(uint(v_3), v_4[0u], v_4[1u], v_4[2u]);
+  tex.GetDimensions(uint(v_3), v_4.x, v_4.y, v_4.z);
   int2 v_5 = int2(min(v, (v_4.xy - (1u).xx)));
   float res = tex.Load(int3(v_5, int(v_3))).x;
 }
diff --git a/test/tint/bug/chromium/378541479.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/chromium/378541479.wgsl.expected.ir.fxc.hlsl
index 72b8b84..d108164 100644
--- a/test/tint/bug/chromium/378541479.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/chromium/378541479.wgsl.expected.ir.fxc.hlsl
@@ -11,10 +11,10 @@
   uint2 v = coords[0u].xy;
   uint v_1 = level[0u].x;
   uint3 v_2 = (0u).xxx;
-  tex.GetDimensions(0u, v_2[0u], v_2[1u], v_2[2u]);
+  tex.GetDimensions(0u, v_2.x, v_2.y, v_2.z);
   uint v_3 = min(v_1, (v_2.z - 1u));
   uint3 v_4 = (0u).xxx;
-  tex.GetDimensions(uint(v_3), v_4[0u], v_4[1u], v_4[2u]);
+  tex.GetDimensions(uint(v_3), v_4.x, v_4.y, v_4.z);
   int2 v_5 = int2(min(v, (v_4.xy - (1u).xx)));
   float res = tex.Load(int3(v_5, int(v_3))).x;
 }
diff --git a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.dxc.hlsl
index 804f12b..2e9887e 100644
--- a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.dxc.hlsl
@@ -19,24 +19,24 @@
       } else {
         break;
       }
-      float3 offset = float3((random[0u]).xxx);
+      float3 offset = float3((random.x).xxx);
       bool v = false;
-      if ((offset[0u] < 0.0f)) {
+      if ((offset.x < 0.0f)) {
         v = true;
       } else {
-        v = (offset[1u] < 0.0f);
+        v = (offset.y < 0.0f);
       }
       bool v_1 = false;
       if (v) {
         v_1 = true;
       } else {
-        v_1 = (offset[0u] > 1.0f);
+        v_1 = (offset.x > 1.0f);
       }
       bool v_2 = false;
       if (v_1) {
         v_2 = true;
       } else {
-        v_2 = (offset[1u] > 1.0f);
+        v_2 = (offset.y > 1.0f);
       }
       if (v_2) {
         i = (i + int(1));
diff --git a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.fxc.hlsl
index 804f12b..2e9887e 100644
--- a/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/gradient_in_varying_loop/1112.wgsl.expected.ir.fxc.hlsl
@@ -19,24 +19,24 @@
       } else {
         break;
       }
-      float3 offset = float3((random[0u]).xxx);
+      float3 offset = float3((random.x).xxx);
       bool v = false;
-      if ((offset[0u] < 0.0f)) {
+      if ((offset.x < 0.0f)) {
         v = true;
       } else {
-        v = (offset[1u] < 0.0f);
+        v = (offset.y < 0.0f);
       }
       bool v_1 = false;
       if (v) {
         v_1 = true;
       } else {
-        v_1 = (offset[0u] > 1.0f);
+        v_1 = (offset.x > 1.0f);
       }
       bool v_2 = false;
       if (v_1) {
         v_2 = true;
       } else {
-        v_2 = (offset[1u] > 1.0f);
+        v_2 = (offset.y > 1.0f);
       }
       if (v_2) {
         i = (i + int(1));
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
index 8dd0639..de1ad7d 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
@@ -6,6 +6,6 @@
 void main() {
   float2x4 m1 = float2x4((0.0f).xxxx, (0.0f).xxxx);
   uint v = uniforms[0u].x;
-  m1[v][int(0)] = 1.0f;
+  m1[v].x = 1.0f;
 }
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
index f87c5c2..53949df 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
@@ -9,12 +9,12 @@
   switch(v) {
     case 0u:
     {
-      m1[0u][int(0)] = 1.0f;
+      m1[0u].x = 1.0f;
       break;
     }
     case 1u:
     {
-      m1[1u][int(0)] = 1.0f;
+      m1[1u].x = 1.0f;
       break;
     }
     default:
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
index 02ee6a5..ecf0657 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.dxc.hlsl
@@ -6,6 +6,6 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint v = uniforms[0u].x;
-  m1[v][int(0)] = 1.0f;
+  m1[v].x = 1.0f;
 }
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
index 3f4f699..bece0db 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
@@ -9,12 +9,12 @@
   switch(v) {
     case 0u:
     {
-      m1[0u][int(0)] = 1.0f;
+      m1[0u].x = 1.0f;
       break;
     }
     case 1u:
     {
-      m1[1u][int(0)] = 1.0f;
+      m1[1u].x = 1.0f;
       break;
     }
     default:
diff --git a/test/tint/bug/tint/1046.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1046.wgsl.expected.ir.dxc.hlsl
index 4eaab55..d97abd5 100644
--- a/test/tint/bug/tint/1046.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1046.wgsl.expected.ir.dxc.hlsl
@@ -44,7 +44,7 @@
   } else {
     if ((uniforms[8u].y == 1u)) {
       color = fragment.normal;
-      color[3u] = 1.0f;
+      color.w = 1.0f;
     } else {
       if ((uniforms[8u].y == 2u)) {
         color = asfloat(uniforms[9u]);
@@ -83,7 +83,7 @@
 }
 
 main_outputs main(main_inputs inputs) {
-  FragmentInput v_11 = {float4(inputs.FragmentInput_position.xyz, (1.0f / inputs.FragmentInput_position[3u])), inputs.FragmentInput_view_position, inputs.FragmentInput_normal, inputs.FragmentInput_uv, inputs.FragmentInput_color};
+  FragmentInput v_11 = {float4(inputs.FragmentInput_position.xyz, (1.0f / inputs.FragmentInput_position.w)), inputs.FragmentInput_view_position, inputs.FragmentInput_normal, inputs.FragmentInput_uv, inputs.FragmentInput_color};
   FragmentOutput v_12 = main_inner(v_11);
   main_outputs v_13 = {v_12.color};
   return v_13;
diff --git a/test/tint/bug/tint/1046.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1046.wgsl.expected.ir.fxc.hlsl
index 4eaab55..d97abd5 100644
--- a/test/tint/bug/tint/1046.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1046.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
   } else {
     if ((uniforms[8u].y == 1u)) {
       color = fragment.normal;
-      color[3u] = 1.0f;
+      color.w = 1.0f;
     } else {
       if ((uniforms[8u].y == 2u)) {
         color = asfloat(uniforms[9u]);
@@ -83,7 +83,7 @@
 }
 
 main_outputs main(main_inputs inputs) {
-  FragmentInput v_11 = {float4(inputs.FragmentInput_position.xyz, (1.0f / inputs.FragmentInput_position[3u])), inputs.FragmentInput_view_position, inputs.FragmentInput_normal, inputs.FragmentInput_uv, inputs.FragmentInput_color};
+  FragmentInput v_11 = {float4(inputs.FragmentInput_position.xyz, (1.0f / inputs.FragmentInput_position.w)), inputs.FragmentInput_view_position, inputs.FragmentInput_normal, inputs.FragmentInput_uv, inputs.FragmentInput_color};
   FragmentOutput v_12 = main_inner(v_11);
   main_outputs v_13 = {v_12.color};
   return v_13;
diff --git a/test/tint/bug/tint/1081.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1081.wgsl.expected.ir.dxc.hlsl
index fc7fcde..55dd5b6 100644
--- a/test/tint/bug/tint/1081.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1081.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
 }
 
 int main_inner(int3 x) {
-  int y = x[0u];
+  int y = x.x;
   {
     while(true) {
       int r = f(y);
diff --git a/test/tint/bug/tint/1081.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1081.wgsl.expected.ir.fxc.hlsl
index fc7fcde..55dd5b6 100644
--- a/test/tint/bug/tint/1081.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1081.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
 }
 
 int main_inner(int3 x) {
-  int y = x[0u];
+  int y = x.x;
   {
     while(true) {
       int r = f(y);
diff --git a/test/tint/bug/tint/1088.spvasm.expected.ir.dxc.hlsl b/test/tint/bug/tint/1088.spvasm.expected.ir.dxc.hlsl
index c4fbaa1..1906426 100644
--- a/test/tint/bug/tint/1088.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1088.spvasm.expected.ir.dxc.hlsl
@@ -38,13 +38,13 @@
   float v_4 = p.x;
   float v_5 = asfloat(x_14[13u].x);
   float v_6 = (v_5 * position_1.y);
-  p[0u] = (v_4 + sin((v_6 + asfloat(x_14[4u].x))));
+  p.x = (v_4 + sin((v_6 + asfloat(x_14[4u].x))));
   float v_7 = p.y;
-  p[1u] = (v_7 + sin((asfloat(x_14[4u].x) + 4.0f)));
+  p.y = (v_7 + sin((asfloat(x_14[4u].x) + 4.0f)));
   float4x4 v_8 = v(0u);
   gl_Position = mul(float4(p.x, p.y, p.z, 1.0f), v_8);
   vUV = uv;
-  gl_Position[1u] = (gl_Position.y * -1.0f);
+  gl_Position.y = (gl_Position.y * -1.0f);
 }
 
 main_out main_inner(float3 position_1_param, float2 uv_param, float3 normal_param) {
diff --git a/test/tint/bug/tint/1088.spvasm.expected.ir.fxc.hlsl b/test/tint/bug/tint/1088.spvasm.expected.ir.fxc.hlsl
index c4fbaa1..1906426 100644
--- a/test/tint/bug/tint/1088.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1088.spvasm.expected.ir.fxc.hlsl
@@ -38,13 +38,13 @@
   float v_4 = p.x;
   float v_5 = asfloat(x_14[13u].x);
   float v_6 = (v_5 * position_1.y);
-  p[0u] = (v_4 + sin((v_6 + asfloat(x_14[4u].x))));
+  p.x = (v_4 + sin((v_6 + asfloat(x_14[4u].x))));
   float v_7 = p.y;
-  p[1u] = (v_7 + sin((asfloat(x_14[4u].x) + 4.0f)));
+  p.y = (v_7 + sin((asfloat(x_14[4u].x) + 4.0f)));
   float4x4 v_8 = v(0u);
   gl_Position = mul(float4(p.x, p.y, p.z, 1.0f), v_8);
   vUV = uv;
-  gl_Position[1u] = (gl_Position.y * -1.0f);
+  gl_Position.y = (gl_Position.y * -1.0f);
 }
 
 main_out main_inner(float3 position_1_param, float2 uv_param, float3 normal_param) {
diff --git a/test/tint/bug/tint/1113.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1113.wgsl.expected.ir.dxc.hlsl
index ab42c49..8ba921a 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.ir.dxc.hlsl
@@ -31,13 +31,13 @@
   float cubeSize = max(v_4, bbSize.z);
   float gridSize = float(uniforms[0u].y);
   float v_5 = gridSize;
-  float v_6 = (v_5 * (position[0u] - asfloat(uniforms[1u].x)));
+  float v_6 = (v_5 * (position.x - asfloat(uniforms[1u].x)));
   float gx = (v_6 / cubeSize);
   float v_7 = gridSize;
-  float v_8 = (v_7 * (position[1u] - asfloat(uniforms[1u].y)));
+  float v_8 = (v_7 * (position.y - asfloat(uniforms[1u].y)));
   float gy = (v_8 / cubeSize);
   float v_9 = gridSize;
-  float v_10 = (v_9 * (position[2u] - asfloat(uniforms[1u].z)));
+  float v_10 = (v_9 * (position.z - asfloat(uniforms[1u].z)));
   float gz = (v_10 / cubeSize);
   return float3(gx, gy, gz);
 }
@@ -88,7 +88,7 @@
 }
 
 void main_count_inner(uint3 GlobalInvocationID) {
-  uint triangleIndex = GlobalInvocationID[0u];
+  uint triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms[0u].x)) {
     return;
   }
@@ -114,7 +114,7 @@
 }
 
 void main_create_lut_inner(uint3 GlobalInvocationID) {
-  uint voxelIndex = GlobalInvocationID[0u];
+  uint voxelIndex = GlobalInvocationID.x;
   doIgnore();
   uint maxVoxels = ((uniforms[0u].y * uniforms[0u].y) * uniforms[0u].y);
   if ((voxelIndex >= maxVoxels)) {
@@ -137,7 +137,7 @@
 }
 
 void main_sort_triangles_inner(uint3 GlobalInvocationID) {
-  uint triangleIndex = GlobalInvocationID[0u];
+  uint triangleIndex = GlobalInvocationID.x;
   doIgnore();
   if ((triangleIndex >= uniforms[0u].x)) {
     return;
diff --git a/test/tint/bug/tint/1113.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1113.wgsl.expected.ir.fxc.hlsl
index ab42c49..8ba921a 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.ir.fxc.hlsl
@@ -31,13 +31,13 @@
   float cubeSize = max(v_4, bbSize.z);
   float gridSize = float(uniforms[0u].y);
   float v_5 = gridSize;
-  float v_6 = (v_5 * (position[0u] - asfloat(uniforms[1u].x)));
+  float v_6 = (v_5 * (position.x - asfloat(uniforms[1u].x)));
   float gx = (v_6 / cubeSize);
   float v_7 = gridSize;
-  float v_8 = (v_7 * (position[1u] - asfloat(uniforms[1u].y)));
+  float v_8 = (v_7 * (position.y - asfloat(uniforms[1u].y)));
   float gy = (v_8 / cubeSize);
   float v_9 = gridSize;
-  float v_10 = (v_9 * (position[2u] - asfloat(uniforms[1u].z)));
+  float v_10 = (v_9 * (position.z - asfloat(uniforms[1u].z)));
   float gz = (v_10 / cubeSize);
   return float3(gx, gy, gz);
 }
@@ -88,7 +88,7 @@
 }
 
 void main_count_inner(uint3 GlobalInvocationID) {
-  uint triangleIndex = GlobalInvocationID[0u];
+  uint triangleIndex = GlobalInvocationID.x;
   if ((triangleIndex >= uniforms[0u].x)) {
     return;
   }
@@ -114,7 +114,7 @@
 }
 
 void main_create_lut_inner(uint3 GlobalInvocationID) {
-  uint voxelIndex = GlobalInvocationID[0u];
+  uint voxelIndex = GlobalInvocationID.x;
   doIgnore();
   uint maxVoxels = ((uniforms[0u].y * uniforms[0u].y) * uniforms[0u].y);
   if ((voxelIndex >= maxVoxels)) {
@@ -137,7 +137,7 @@
 }
 
 void main_sort_triangles_inner(uint3 GlobalInvocationID) {
-  uint triangleIndex = GlobalInvocationID[0u];
+  uint triangleIndex = GlobalInvocationID.x;
   doIgnore();
   if ((triangleIndex >= uniforms[0u].x)) {
     return;
diff --git a/test/tint/bug/tint/1118.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1118.wgsl.expected.ir.dxc.hlsl
index 6d310f3..f2148c0 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.ir.dxc.hlsl
@@ -52,10 +52,10 @@
   }
   float4 x_34 = asfloat(x_29[0u]);
   float3 x_38 = (0.0f).xxx;
-  viewDirectionW = normalize((float3(x_34[0u], x_34[1u], x_34[2u]) - x_38));
+  viewDirectionW = normalize((float3(x_34.x, x_34.y, x_34.z) - x_38));
   baseColor = (1.0f).xxxx;
   float4 x_52 = asfloat(x_49[0u]);
-  diffuseColor = float3(x_52[0u], x_52[1u], x_52[2u]);
+  diffuseColor = float3(x_52.x, x_52.y, x_52.z);
   float x_60 = asfloat(x_49[0u].w);
   alpha = x_60;
   float3 x_62 = (0.0f).xxx;
@@ -63,10 +63,10 @@
   uvOffset = (0.0f).xx;
   float4 x_74 = (0.0f).xxxx;
   float4 x_76 = baseColor;
-  float3 v = float3(x_76[0u], x_76[1u], x_76[2u]);
-  float3 x_78 = (v * float3(x_74[0u], x_74[1u], x_74[2u]));
+  float3 v = float3(x_76.x, x_76.y, x_76.z);
+  float3 x_78 = (v * float3(x_74.x, x_74.y, x_74.z));
   float4 x_79 = baseColor;
-  baseColor = float4(x_78[0u], x_78[1u], x_78[2u], x_79[3u]);
+  baseColor = float4(x_78.x, x_78.y, x_78.z, x_79.w);
   baseAmbientColor = (1.0f).xxx;
   glossiness = 0.0f;
   diffuseBase = (0.0f).xxx;
@@ -81,24 +81,24 @@
   float3 x_103 = asfloat(x_49[1u].xyz);
   float4 x_108 = baseColor;
   float3 v_1 = clamp((((x_96 * x_97) + x_99) + x_103), (0.0f).xxx, (1.0f).xxx);
-  finalDiffuse = (v_1 * float3(x_108[0u], x_108[1u], x_108[2u]));
+  finalDiffuse = (v_1 * float3(x_108.x, x_108.y, x_108.z));
   finalSpecular = (0.0f).xxx;
   float3 x_113 = finalDiffuse;
   float3 x_114 = baseAmbientColor;
   float3 x_116 = finalSpecular;
   float4 x_118 = reflectionColor;
   float4 x_121 = refractionColor;
-  float3 v_2 = (((x_113 * x_114) + x_116) + float3(x_118[0u], x_118[1u], x_118[2u]));
-  float3 x_123 = (v_2 + float3(x_121[0u], x_121[1u], x_121[2u]));
+  float3 v_2 = (((x_113 * x_114) + x_116) + float3(x_118.x, x_118.y, x_118.z));
+  float3 x_123 = (v_2 + float3(x_121.x, x_121.y, x_121.z));
   float x_124 = alpha;
-  color = float4(x_123[0u], x_123[1u], x_123[2u], x_124);
+  color = float4(x_123.x, x_123.y, x_123.z, x_124);
   float4 x_129 = color;
-  float3 x_132 = max(float3(x_129[0u], x_129[1u], x_129[2u]), (0.0f).xxx);
+  float3 x_132 = max(float3(x_129.x, x_129.y, x_129.z), (0.0f).xxx);
   float4 x_133 = color;
-  color = float4(x_132[0u], x_132[1u], x_132[2u], x_133[3u]);
+  color = float4(x_132.x, x_132.y, x_132.z, x_133.w);
   float x_140 = asfloat(x_137[0u].x);
   float x_142 = color.w;
-  color[3u] = (x_142 * x_140);
+  color.w = (x_142 * x_140);
   float4 x_147 = color;
   glFragColor = x_147;
 }
diff --git a/test/tint/bug/tint/1118.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1118.wgsl.expected.ir.fxc.hlsl
index 6d310f3..f2148c0 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.ir.fxc.hlsl
@@ -52,10 +52,10 @@
   }
   float4 x_34 = asfloat(x_29[0u]);
   float3 x_38 = (0.0f).xxx;
-  viewDirectionW = normalize((float3(x_34[0u], x_34[1u], x_34[2u]) - x_38));
+  viewDirectionW = normalize((float3(x_34.x, x_34.y, x_34.z) - x_38));
   baseColor = (1.0f).xxxx;
   float4 x_52 = asfloat(x_49[0u]);
-  diffuseColor = float3(x_52[0u], x_52[1u], x_52[2u]);
+  diffuseColor = float3(x_52.x, x_52.y, x_52.z);
   float x_60 = asfloat(x_49[0u].w);
   alpha = x_60;
   float3 x_62 = (0.0f).xxx;
@@ -63,10 +63,10 @@
   uvOffset = (0.0f).xx;
   float4 x_74 = (0.0f).xxxx;
   float4 x_76 = baseColor;
-  float3 v = float3(x_76[0u], x_76[1u], x_76[2u]);
-  float3 x_78 = (v * float3(x_74[0u], x_74[1u], x_74[2u]));
+  float3 v = float3(x_76.x, x_76.y, x_76.z);
+  float3 x_78 = (v * float3(x_74.x, x_74.y, x_74.z));
   float4 x_79 = baseColor;
-  baseColor = float4(x_78[0u], x_78[1u], x_78[2u], x_79[3u]);
+  baseColor = float4(x_78.x, x_78.y, x_78.z, x_79.w);
   baseAmbientColor = (1.0f).xxx;
   glossiness = 0.0f;
   diffuseBase = (0.0f).xxx;
@@ -81,24 +81,24 @@
   float3 x_103 = asfloat(x_49[1u].xyz);
   float4 x_108 = baseColor;
   float3 v_1 = clamp((((x_96 * x_97) + x_99) + x_103), (0.0f).xxx, (1.0f).xxx);
-  finalDiffuse = (v_1 * float3(x_108[0u], x_108[1u], x_108[2u]));
+  finalDiffuse = (v_1 * float3(x_108.x, x_108.y, x_108.z));
   finalSpecular = (0.0f).xxx;
   float3 x_113 = finalDiffuse;
   float3 x_114 = baseAmbientColor;
   float3 x_116 = finalSpecular;
   float4 x_118 = reflectionColor;
   float4 x_121 = refractionColor;
-  float3 v_2 = (((x_113 * x_114) + x_116) + float3(x_118[0u], x_118[1u], x_118[2u]));
-  float3 x_123 = (v_2 + float3(x_121[0u], x_121[1u], x_121[2u]));
+  float3 v_2 = (((x_113 * x_114) + x_116) + float3(x_118.x, x_118.y, x_118.z));
+  float3 x_123 = (v_2 + float3(x_121.x, x_121.y, x_121.z));
   float x_124 = alpha;
-  color = float4(x_123[0u], x_123[1u], x_123[2u], x_124);
+  color = float4(x_123.x, x_123.y, x_123.z, x_124);
   float4 x_129 = color;
-  float3 x_132 = max(float3(x_129[0u], x_129[1u], x_129[2u]), (0.0f).xxx);
+  float3 x_132 = max(float3(x_129.x, x_129.y, x_129.z), (0.0f).xxx);
   float4 x_133 = color;
-  color = float4(x_132[0u], x_132[1u], x_132[2u], x_133[3u]);
+  color = float4(x_132.x, x_132.y, x_132.z, x_133.w);
   float x_140 = asfloat(x_137[0u].x);
   float x_142 = color.w;
-  color[3u] = (x_142 * x_140);
+  color.w = (x_142 * x_140);
   float4 x_147 = color;
   glFragColor = x_147;
 }
diff --git a/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl
index 650ff95..50c0383 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.ir.dxc.hlsl
@@ -19,7 +19,7 @@
 }
 
 void main_inner(uint3 GlobalInvocationID) {
-  uint index = GlobalInvocationID[0u];
+  uint index = GlobalInvocationID.x;
   if ((index >= config[0u].x)) {
     return;
   }
@@ -87,23 +87,23 @@
               float4 p = (0.0f).xxxx;
               uint v_15 = i;
               if ((frustumPlanes[v_15].x > 0.0f)) {
-                p[0u] = boxMax.x;
+                p.x = boxMax.x;
               } else {
-                p[0u] = boxMin.x;
+                p.x = boxMin.x;
               }
               uint v_16 = i;
               if ((frustumPlanes[v_16].y > 0.0f)) {
-                p[1u] = boxMax.y;
+                p.y = boxMax.y;
               } else {
-                p[1u] = boxMin.y;
+                p.y = boxMin.y;
               }
               uint v_17 = i;
               if ((frustumPlanes[v_17].z > 0.0f)) {
-                p[2u] = boxMax.z;
+                p.z = boxMax.z;
               } else {
-                p[2u] = boxMin.z;
+                p.z = boxMin.z;
               }
-              p[3u] = 1.0f;
+              p.w = 1.0f;
               float v_18 = dp;
               float4 v_19 = p;
               uint v_20 = i;
@@ -139,7 +139,7 @@
             }
             uint v_23 = offset;
             uint v_24 = (uint(tileId) * 260u);
-            tileLightId.Store(((4u + v_24) + (uint(v_23) * 4u)), GlobalInvocationID[0u]);
+            tileLightId.Store(((4u + v_24) + (uint(v_23) * 4u)), GlobalInvocationID.x);
           }
           {
             x = (x + int(1));
diff --git a/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl
index 650ff95..50c0383 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
 }
 
 void main_inner(uint3 GlobalInvocationID) {
-  uint index = GlobalInvocationID[0u];
+  uint index = GlobalInvocationID.x;
   if ((index >= config[0u].x)) {
     return;
   }
@@ -87,23 +87,23 @@
               float4 p = (0.0f).xxxx;
               uint v_15 = i;
               if ((frustumPlanes[v_15].x > 0.0f)) {
-                p[0u] = boxMax.x;
+                p.x = boxMax.x;
               } else {
-                p[0u] = boxMin.x;
+                p.x = boxMin.x;
               }
               uint v_16 = i;
               if ((frustumPlanes[v_16].y > 0.0f)) {
-                p[1u] = boxMax.y;
+                p.y = boxMax.y;
               } else {
-                p[1u] = boxMin.y;
+                p.y = boxMin.y;
               }
               uint v_17 = i;
               if ((frustumPlanes[v_17].z > 0.0f)) {
-                p[2u] = boxMax.z;
+                p.z = boxMax.z;
               } else {
-                p[2u] = boxMin.z;
+                p.z = boxMin.z;
               }
-              p[3u] = 1.0f;
+              p.w = 1.0f;
               float v_18 = dp;
               float4 v_19 = p;
               uint v_20 = i;
@@ -139,7 +139,7 @@
             }
             uint v_23 = offset;
             uint v_24 = (uint(tileId) * 260u);
-            tileLightId.Store(((4u + v_24) + (uint(v_23) * 4u)), GlobalInvocationID[0u]);
+            tileLightId.Store(((4u + v_24) + (uint(v_23) * 4u)), GlobalInvocationID.x);
           }
           {
             x = (x + int(1));
diff --git a/test/tint/bug/tint/1703.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1703.wgsl.expected.ir.dxc.hlsl
index 2b6ffcc..2b102a5 100644
--- a/test/tint/bug/tint/1703.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1703.wgsl.expected.ir.dxc.hlsl
@@ -7,8 +7,8 @@
 SamplerState my_sampler : register(s2);
 void foo_member_initialize() {
   bool2 vb2 = (false).xx;
-  vb2[0u] = (my_global.z != 0.0f);
-  vb2[0u] = (asfloat(my_uniform[0u].x) == -1.0f);
+  vb2.x = (my_global.z != 0.0f);
+  vb2.x = (asfloat(my_uniform[0u].x) == -1.0f);
   vb2 = bool2((asfloat(my_uniform[0u].x) == -1.0f), false);
   if (vb2.x) {
     float4 r = my_texture.SampleBias(my_sampler, (0.0f).xx, clamp(0.0f, -16.0f, 15.9899997711181640625f));
@@ -17,8 +17,8 @@
 
 void foo_default_initialize() {
   bool2 vb2 = (false).xx;
-  vb2[0u] = (my_global.z != 0.0f);
-  vb2[0u] = (asfloat(my_uniform[0u].x) == -1.0f);
+  vb2.x = (my_global.z != 0.0f);
+  vb2.x = (asfloat(my_uniform[0u].x) == -1.0f);
   vb2 = (false).xx;
   if (vb2.x) {
     float4 r = my_texture.SampleBias(my_sampler, (0.0f).xx, clamp(0.0f, -16.0f, 15.9899997711181640625f));
diff --git a/test/tint/bug/tint/1703.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1703.wgsl.expected.ir.fxc.hlsl
index 2b6ffcc..2b102a5 100644
--- a/test/tint/bug/tint/1703.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1703.wgsl.expected.ir.fxc.hlsl
@@ -7,8 +7,8 @@
 SamplerState my_sampler : register(s2);
 void foo_member_initialize() {
   bool2 vb2 = (false).xx;
-  vb2[0u] = (my_global.z != 0.0f);
-  vb2[0u] = (asfloat(my_uniform[0u].x) == -1.0f);
+  vb2.x = (my_global.z != 0.0f);
+  vb2.x = (asfloat(my_uniform[0u].x) == -1.0f);
   vb2 = bool2((asfloat(my_uniform[0u].x) == -1.0f), false);
   if (vb2.x) {
     float4 r = my_texture.SampleBias(my_sampler, (0.0f).xx, clamp(0.0f, -16.0f, 15.9899997711181640625f));
@@ -17,8 +17,8 @@
 
 void foo_default_initialize() {
   bool2 vb2 = (false).xx;
-  vb2[0u] = (my_global.z != 0.0f);
-  vb2[0u] = (asfloat(my_uniform[0u].x) == -1.0f);
+  vb2.x = (my_global.z != 0.0f);
+  vb2.x = (asfloat(my_uniform[0u].x) == -1.0f);
   vb2 = (false).xx;
   if (vb2.x) {
     float4 r = my_texture.SampleBias(my_sampler, (0.0f).xx, clamp(0.0f, -16.0f, 15.9899997711181640625f));
diff --git a/test/tint/bug/tint/1739.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1739.wgsl.expected.ir.dxc.hlsl
index 32a4cf0..a4693c7 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1739.wgsl.expected.ir.dxc.hlsl
@@ -52,28 +52,28 @@
   float v_8 = 0.0f;
   if ((params.numPlanes == 1u)) {
     uint3 v_9 = (0u).xxx;
-    plane_0.GetDimensions(0u, v_9[0u], v_9[1u], v_9[2u]);
+    plane_0.GetDimensions(0u, v_9.x, v_9.y, v_9.z);
     uint v_10 = min(0u, (v_9.z - 1u));
     uint3 v_11 = (0u).xxx;
-    plane_0.GetDimensions(uint(v_10), v_11[0u], v_11[1u], v_11[2u]);
+    plane_0.GetDimensions(uint(v_10), v_11.x, v_11.y, v_11.z);
     int2 v_12 = int2(min(v_6, (v_11.xy - (1u).xx)));
     float4 v_13 = float4(plane_0.Load(int3(v_12, int(v_10))));
     v_7 = v_13.xyz;
-    v_8 = v_13[3u];
+    v_8 = v_13.w;
   } else {
     uint3 v_14 = (0u).xxx;
-    plane_0.GetDimensions(0u, v_14[0u], v_14[1u], v_14[2u]);
+    plane_0.GetDimensions(0u, v_14.x, v_14.y, v_14.z);
     uint v_15 = min(0u, (v_14.z - 1u));
     uint3 v_16 = (0u).xxx;
-    plane_0.GetDimensions(uint(v_15), v_16[0u], v_16[1u], v_16[2u]);
+    plane_0.GetDimensions(uint(v_15), v_16.x, v_16.y, v_16.z);
     int2 v_17 = int2(min(v_6, (v_16.xy - (1u).xx)));
-    float v_18 = float4(plane_0.Load(int3(v_17, int(v_15))))[0u];
+    float v_18 = float4(plane_0.Load(int3(v_17, int(v_15)))).x;
     uint2 v_19 = tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor));
     uint3 v_20 = (0u).xxx;
-    plane_1.GetDimensions(0u, v_20[0u], v_20[1u], v_20[2u]);
+    plane_1.GetDimensions(0u, v_20.x, v_20.y, v_20.z);
     uint v_21 = min(0u, (v_20.z - 1u));
     uint3 v_22 = (0u).xxx;
-    plane_1.GetDimensions(uint(v_21), v_22[0u], v_22[1u], v_22[2u]);
+    plane_1.GetDimensions(uint(v_21), v_22.x, v_22.y, v_22.z);
     int2 v_23 = int2(min(v_19, (v_22.xy - (1u).xx)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_18, float4(plane_1.Load(int3(v_23, int(v_21)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/bug/tint/1739.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1739.wgsl.expected.ir.fxc.hlsl
index 32a4cf0..a4693c7 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1739.wgsl.expected.ir.fxc.hlsl
@@ -52,28 +52,28 @@
   float v_8 = 0.0f;
   if ((params.numPlanes == 1u)) {
     uint3 v_9 = (0u).xxx;
-    plane_0.GetDimensions(0u, v_9[0u], v_9[1u], v_9[2u]);
+    plane_0.GetDimensions(0u, v_9.x, v_9.y, v_9.z);
     uint v_10 = min(0u, (v_9.z - 1u));
     uint3 v_11 = (0u).xxx;
-    plane_0.GetDimensions(uint(v_10), v_11[0u], v_11[1u], v_11[2u]);
+    plane_0.GetDimensions(uint(v_10), v_11.x, v_11.y, v_11.z);
     int2 v_12 = int2(min(v_6, (v_11.xy - (1u).xx)));
     float4 v_13 = float4(plane_0.Load(int3(v_12, int(v_10))));
     v_7 = v_13.xyz;
-    v_8 = v_13[3u];
+    v_8 = v_13.w;
   } else {
     uint3 v_14 = (0u).xxx;
-    plane_0.GetDimensions(0u, v_14[0u], v_14[1u], v_14[2u]);
+    plane_0.GetDimensions(0u, v_14.x, v_14.y, v_14.z);
     uint v_15 = min(0u, (v_14.z - 1u));
     uint3 v_16 = (0u).xxx;
-    plane_0.GetDimensions(uint(v_15), v_16[0u], v_16[1u], v_16[2u]);
+    plane_0.GetDimensions(uint(v_15), v_16.x, v_16.y, v_16.z);
     int2 v_17 = int2(min(v_6, (v_16.xy - (1u).xx)));
-    float v_18 = float4(plane_0.Load(int3(v_17, int(v_15))))[0u];
+    float v_18 = float4(plane_0.Load(int3(v_17, int(v_15)))).x;
     uint2 v_19 = tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor));
     uint3 v_20 = (0u).xxx;
-    plane_1.GetDimensions(0u, v_20[0u], v_20[1u], v_20[2u]);
+    plane_1.GetDimensions(0u, v_20.x, v_20.y, v_20.z);
     uint v_21 = min(0u, (v_20.z - 1u));
     uint3 v_22 = (0u).xxx;
-    plane_1.GetDimensions(uint(v_21), v_22[0u], v_22[1u], v_22[2u]);
+    plane_1.GetDimensions(uint(v_21), v_22.x, v_22.y, v_22.z);
     int2 v_23 = int2(min(v_19, (v_22.xy - (1u).xx)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_18, float4(plane_1.Load(int3(v_23, int(v_21)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/bug/tint/1926.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1926.wgsl.expected.ir.dxc.hlsl
index 2c0139e..ae824c2 100644
--- a/test/tint/bug/tint/1926.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1926.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   uint v = sh_atomic_failed;
   GroupMemoryBarrierWithGroupSync();
   uint failed = v;
-  if ((local_id[0u] == 0u)) {
+  if ((local_id.x == 0u)) {
     output.Store(0u, failed);
   }
 }
diff --git a/test/tint/bug/tint/1926.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1926.wgsl.expected.ir.fxc.hlsl
index 2c0139e..ae824c2 100644
--- a/test/tint/bug/tint/1926.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1926.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   uint v = sh_atomic_failed;
   GroupMemoryBarrierWithGroupSync();
   uint failed = v;
-  if ((local_id[0u] == 0u)) {
+  if ((local_id.x == 0u)) {
     output.Store(0u, failed);
   }
 }
diff --git a/test/tint/bug/tint/1976.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/1976.wgsl.expected.ir.dxc.hlsl
index 8b9c540..0b0a3cb 100644
--- a/test/tint/bug/tint/1976.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/1976.wgsl.expected.ir.dxc.hlsl
@@ -4,6 +4,6 @@
 [numthreads(1, 1, 1)]
 void main() {
   int2 v = int2((int(0)).xx);
-  results.Store(0u, asuint(float4(texture0.Load(v, int(int(0))))[0u]));
+  results.Store(0u, asuint(float4(texture0.Load(v, int(int(0)))).x));
 }
 
diff --git a/test/tint/bug/tint/1976.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1976.wgsl.expected.ir.fxc.hlsl
index 8b9c540..0b0a3cb 100644
--- a/test/tint/bug/tint/1976.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1976.wgsl.expected.ir.fxc.hlsl
@@ -4,6 +4,6 @@
 [numthreads(1, 1, 1)]
 void main() {
   int2 v = int2((int(0)).xx);
-  results.Store(0u, asuint(float4(texture0.Load(v, int(int(0))))[0u]));
+  results.Store(0u, asuint(float4(texture0.Load(v, int(int(0)))).x));
 }
 
diff --git a/test/tint/bug/tint/2146.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/2146.wgsl.expected.ir.dxc.hlsl
index 719b148..b0bee7a 100644
--- a/test/tint/bug/tint/2146.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/2146.wgsl.expected.ir.dxc.hlsl
@@ -12,6 +12,6 @@
 void main() {
   vector<float16_t, 4> a = (float16_t(0.0h)).xxxx;
   float16_t b = float16_t(1.0h);
-  a[int(0)] = (a.x + b);
+  a.x = (a.x + b);
 }
 
diff --git a/test/tint/bug/tint/349291130.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/349291130.wgsl.expected.ir.dxc.hlsl
index e01eb63..1b51fbe 100644
--- a/test/tint/bug/tint/349291130.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/349291130.wgsl.expected.ir.dxc.hlsl
@@ -4,7 +4,7 @@
 void e() {
   {
     uint3 v = (0u).xxx;
-    tint_symbol.GetDimensions(0u, v[0u], v[1u], v[2u]);
+    tint_symbol.GetDimensions(0u, v.x, v.y, v.z);
     uint level = v.z;
     while(true) {
       if ((level > 0u)) {
diff --git a/test/tint/bug/tint/349291130.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/349291130.wgsl.expected.ir.fxc.hlsl
index e01eb63..1b51fbe 100644
--- a/test/tint/bug/tint/349291130.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/349291130.wgsl.expected.ir.fxc.hlsl
@@ -4,7 +4,7 @@
 void e() {
   {
     uint3 v = (0u).xxx;
-    tint_symbol.GetDimensions(0u, v[0u], v[1u], v[2u]);
+    tint_symbol.GetDimensions(0u, v.x, v.y, v.z);
     uint level = v.z;
     while(true) {
       if ((level > 0u)) {
diff --git a/test/tint/bug/tint/349310442.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/349310442.wgsl.expected.ir.dxc.hlsl
index 1f84b93..87d308a 100644
--- a/test/tint/bug/tint/349310442.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/349310442.wgsl.expected.ir.dxc.hlsl
@@ -53,10 +53,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/bug/tint/349310442.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/349310442.wgsl.expected.ir.fxc.hlsl
index 1f84b93..87d308a 100644
--- a/test/tint/bug/tint/349310442.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/349310442.wgsl.expected.ir.fxc.hlsl
@@ -53,10 +53,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/bug/tint/379127084.wgsl b/test/tint/bug/tint/379127084.wgsl
new file mode 100644
index 0000000..e7094e1
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl
@@ -0,0 +1,199 @@
+diagnostic(off, derivative_uniformity);
+diagnostic(off, chromium.unreachable_code);
+struct FSIn {
+@location(0) @interpolate(flat, either) ssboIndicesVar: vec2<u32>,
+@location(1) localCoordsVar: vec2<f32>,
+};
+struct FSOut {
+@location(0) sk_FragColor: vec4<f32>,
+};
+struct IntrinsicUniforms {
+@size(16) viewport: vec4<f32>,
+dstCopyBounds: vec4<f32>,
+};
+@group(0) @binding(0) var<uniform> _uniform0 : IntrinsicUniforms;
+struct FSUniforms {
+fsUniformData: array<FSUniformData>,
+};
+@group(0) @binding(2) var<storage, read> _storage1 : FSUniforms;
+struct FSUniformData {
+baseFrequency_1: vec2<f32>,
+stitchData_1: vec2<f32>,
+noiseType_1: i32,
+numOctaves_1: i32,
+stitching_1: i32,
+matrix_4: mat4x4<f32>,
+translate_4: vec4<f32>,
+inHSL_4: i32,
+clampRGB_4: i32,
+};
+var<private> shadingSsboIndex: u32;
+@group(1) @binding(0) var permutationsSampler_1_Sampler: sampler;
+@group(1) @binding(1) var permutationsSampler_1_Texture: texture_2d<f32>;
+@group(1) @binding(2) var noiseSampler_1_Sampler: sampler;
+@group(1) @binding(3) var noiseSampler_1_Texture: texture_2d<f32>;
+fn _skslMain(_stageIn: FSIn, _stageOut: ptr<function, FSOut>) {
+{
+shadingSsboIndex = _stageIn.ssboIndicesVar.y;
+let _56_d: i32 = _storage1.fsUniformData[shadingSsboIndex].noiseType_1;
+var _57_k: vec2<f32> = vec2<f32>((_stageIn.localCoordsVar + 0.5) * _storage1.fsUniformData[shadingSsboIndex].baseFrequency_1);
+var _58_l: vec4<f32> = vec4<f32>(0.0);
+var _59_m: vec2<f32> = vec2<f32>(_storage1.fsUniformData[shadingSsboIndex].stitchData_1);
+var _60_n: f32 = 1.0;
+{
+var _61_o: i32 = 0;
+loop {
+if _61_o < _storage1.fsUniformData[shadingSsboIndex].numOctaves_1 {
+{
+var _62_f: vec4<f32>;
+let _skTemp2 = floor(_57_k);
+_62_f = vec4<f32>((_skTemp2), _62_f.zw);
+_62_f = vec4<f32>(_62_f.xy, (_62_f.xy + vec2<f32>(1.0)));
+if bool(_storage1.fsUniformData[shadingSsboIndex].stitching_1) {
+let _skTemp3 = step(_59_m.xyxy, _62_f);
+_62_f = _62_f - _skTemp3 * _59_m.xyxy;
+}
+let _63_g: f32 = textureSampleBias(permutationsSampler_1_Texture, permutationsSampler_1_Sampler, vec2<f32>(vec2<f32>((_62_f.x + 0.5) * 0.00390625, 0.5)), -0.475).x;
+let _64_h: f32 = textureSampleBias(permutationsSampler_1_Texture, permutationsSampler_1_Sampler, vec2<f32>(vec2<f32>((_62_f.z + 0.5) * 0.00390625, 0.5)), -0.475).x;
+var _65_i: vec2<f32> = vec2<f32>(_63_g, _64_h);
+if false {
+let _skTemp4 = floor(_65_i * vec2<f32>(255.0) + vec2<f32>(0.5));
+_65_i = _skTemp4 * vec2<f32>(0.003921569);
+}
+var _66_j: vec4<f32> = 256.0 * _65_i.xyxy + _62_f.yyww;
+_66_j = _66_j * vec4<f32>(0.00390625);
+let _67_p: vec4<f32> = _66_j;
+let _skTemp5 = fract(_57_k);
+let _68_d: vec2<f32> = _skTemp5;
+let _skTemp6 = smoothstep(vec2<f32>(0.0), vec2<f32>(1.0), _68_d);
+let _69_e: vec2<f32> = _skTemp6;
+const _70_f: f32 = 0.00390625;
+var _71_g: vec4<f32>;
+{
+var _72_h: i32 = 0;
+loop {
+{
+let _73_i: f32 = (f32(_72_h) + 0.5) * 0.25;
+let _74_j: vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.x), f32(_73_i)), -0.475);
+let _75_k: vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.y), f32(_73_i)), -0.475);
+let _76_l: vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.w), f32(_73_i)), -0.475);
+let _77_m: vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.z), f32(_73_i)), -0.475);
+var _78_n: vec2<f32> = _68_d;
+let _skTemp7 = dot((_74_j.yw + _74_j.xz * _70_f) * 2.0 - 1.0, _78_n);
+var _79_o: f32 = _skTemp7;
+_78_n.x = _78_n.x - 1.0;
+let _skTemp8 = dot((_75_k.yw + _75_k.xz * _70_f) * 2.0 - 1.0, _78_n);
+var _80_p: f32 = _skTemp8;
+let _skTemp9 = mix(_79_o, _80_p, _69_e.x);
+let _81_q: f32 = _skTemp9;
+_78_n.y = _78_n.y - 1.0;
+let _skTemp10 = dot((_76_l.yw + _76_l.xz * _70_f) * 2.0 - 1.0, _78_n);
+_80_p = _skTemp10;
+_78_n.x = _78_n.x + 1.0;
+let _skTemp11 = dot((_77_m.yw + _77_m.xz * _70_f) * 2.0 - 1.0, _78_n);
+_79_o = _skTemp11;
+let _skTemp12 = mix(_79_o, _80_p, _69_e.x);
+let _82_r: f32 = _skTemp12;
+let _skTemp13 = mix(_81_q, _82_r, _69_e.y);
+_71_g[_72_h] = _skTemp13;
+}
+continuing {
+_72_h = _72_h + i32(1);
+break if _72_h >= 4;
+}
+}
+}
+var _83_q: vec4<f32> = _71_g;
+if _56_d != 0 {
+let _skTemp14 = abs(_83_q);
+_83_q = _skTemp14;
+}
+_58_l = _58_l + _83_q * _60_n;
+_57_k = _57_k * vec2<f32>(2.0);
+_60_n = _60_n * 0.5;
+_59_m = _59_m * vec2<f32>(2.0);
+}
+} else {
+break;
+}
+continuing {
+_61_o = _61_o + i32(1);
+}
+}
+}
+if _56_d == 0 {
+_58_l = _58_l * vec4<f32>(0.5) + vec4<f32>(0.5);
+}
+let _skTemp15 = saturate(_58_l);
+_58_l = _skTemp15;
+let _skTemp16 = dot(vec3<f32>(0.2126, 0.7152, 0.0722), vec4<f32>(vec3<f32>(vec3<f32>(_58_l.xyz) * f32(_58_l.w)), f32(f32(_58_l.w))).xyz);
+let _skTemp17 = saturate(_skTemp16);
+var _84_a: vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, _skTemp17);
+let _85_d: i32 = _storage1.fsUniformData[shadingSsboIndex].inHSL_4;
+if bool(_85_d) {
+{
+var _skTemp18: vec4<f32>;
+if _84_a.y < _84_a.z {
+_skTemp18 = vec4<f32>(_84_a.zy, -1.0, 0.6666667);
+} else {
+_skTemp18 = vec4<f32>(_84_a.yz, 0.0, -0.333333343);
+}
+let _86_e: vec4<f32> = _skTemp18;
+var _skTemp19: vec4<f32>;
+if _84_a.x < _86_e.x {
+_skTemp19 = vec4<f32>(_86_e.x, _84_a.x, _86_e.yw);
+} else {
+_skTemp19 = vec4<f32>(_84_a.x, _86_e.x, _86_e.yz);
+}
+let _87_f: vec4<f32> = _skTemp19;
+let _88_h: f32 = _87_f.x;
+let _skTemp20 = min(_87_f.y, _87_f.z);
+let _89_i: f32 = _88_h - _skTemp20;
+let _90_j: f32 = _88_h - _89_i * 0.5;
+let _skTemp21 = abs(_87_f.w + (_87_f.y - _87_f.z) / (_89_i * 6.0 + 0.0001));
+let _91_k: f32 = _skTemp21;
+let _skTemp22 = abs(_90_j * 2.0 - _84_a.w);
+let _92_l: f32 = _89_i / ((_84_a.w + 0.0001) - _skTemp22);
+let _93_m: f32 = _90_j / (_84_a.w + 0.0001);
+_84_a = vec4<f32>(_91_k, _92_l, _93_m, _84_a.w);
+}
+} else {
+{
+let _skTemp23 = max(_84_a.w, 0.0001);
+_84_a = vec4<f32>(_84_a.xyz / _skTemp23, _84_a.w);
+}
+}
+var _94_f: vec4<f32> = vec4<f32>(_storage1.fsUniformData[shadingSsboIndex].matrix_4 * vec4<f32>(_84_a) + _storage1.fsUniformData[shadingSsboIndex].translate_4);
+if bool(_85_d) {
+{
+let _skTemp24 = abs(2.0 * _94_f.z - 1.0);
+let _95_b: f32 = (1.0 - _skTemp24) * _94_f.y;
+let _96_c: vec3<f32> = _94_f.xxx + vec3<f32>(0.0, 0.6666667, 0.333333343);
+let _skTemp25 = fract(_96_c);
+let _skTemp26 = abs(_skTemp25 * 6.0 - 3.0);
+let _skTemp27 = saturate(_skTemp26 - 1.0);
+let _97_d: vec3<f32> = _skTemp27;
+let _skTemp28 = saturate(vec4<f32>(((_97_d - 0.5) * _95_b + _94_f.z) * _94_f.w, _94_f.w));
+_94_f = _skTemp28;
+}
+} else {
+{
+if bool(_storage1.fsUniformData[shadingSsboIndex].clampRGB_4) {
+let _skTemp29 = saturate(_94_f);
+_94_f = _skTemp29;
+} else {
+let _skTemp30 = saturate(_94_f.w);
+_94_f.w = _skTemp30;
+}
+_94_f = vec4<f32>((_94_f.xyz * _94_f.w), _94_f.w);
+}
+}
+let outColor_0: vec4<f32> = _94_f;
+(*_stageOut).sk_FragColor = outColor_0;
+}
+}
+@fragment fn main(_stageIn: FSIn) -> FSOut {
+var _stageOut: FSOut;
+_skslMain(_stageIn, &_stageOut);
+return _stageOut;
+}
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/379127084.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..a8d1a1b
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.dxc.hlsl
@@ -0,0 +1,210 @@
+void set_vector_element(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+struct FSIn {
+  uint2 ssboIndicesVar;
+  float2 localCoordsVar;
+};
+struct FSOut {
+  float4 sk_FragColor;
+};
+
+cbuffer cbuffer__uniform0 : register(b0) {
+  uint4 _uniform0[2];
+};
+
+ByteAddressBuffer _storage1 : register(t2);
+static uint shadingSsboIndex = 0u;
+SamplerState permutationsSampler_1_Sampler : register(s0, space1);
+Texture2D<float4> permutationsSampler_1_Texture : register(t1, space1);
+SamplerState noiseSampler_1_Sampler : register(s2, space1);
+Texture2D<float4> noiseSampler_1_Texture : register(t3, space1);
+
+float4x4 _storage1_load_2(uint offset) {
+  return float4x4(asfloat(_storage1.Load4((offset + 0u))), asfloat(_storage1.Load4((offset + 16u))), asfloat(_storage1.Load4((offset + 32u))), asfloat(_storage1.Load4((offset + 48u))));
+}
+
+void _skslMain(FSIn _stageIn, inout FSOut _stageOut) {
+  {
+    shadingSsboIndex = _stageIn.ssboIndicesVar.y;
+    int _56_d = asint(_storage1.Load(((128u * shadingSsboIndex) + 16u)));
+    float2 _57_k = float2(((_stageIn.localCoordsVar + 0.5f) * asfloat(_storage1.Load2((128u * shadingSsboIndex)))));
+    float4 _58_l = (0.0f).xxxx;
+    float2 _59_m = float2(asfloat(_storage1.Load2(((128u * shadingSsboIndex) + 8u))));
+    float _60_n = 1.0f;
+    {
+      int _61_o = 0;
+      while (true) {
+        if ((_61_o < asint(_storage1.Load(((128u * shadingSsboIndex) + 20u))))) {
+          {
+            float4 _62_f = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            float2 _skTemp2 = floor(_57_k);
+            _62_f = float4(_skTemp2, _62_f.zw);
+            _62_f = float4(_62_f.xy, (_62_f.xy + (1.0f).xx));
+            if (bool(asint(_storage1.Load(((128u * shadingSsboIndex) + 24u))))) {
+              float4 _skTemp3 = step(_59_m.xyxy, _62_f);
+              _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+            }
+            float4 tint_symbol = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, float2(float2(((_62_f.x + 0.5f) * 0.00390625f), 0.5f)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+            float _63_g = tint_symbol.x;
+            float4 tint_symbol_1 = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, float2(float2(((_62_f.z + 0.5f) * 0.00390625f), 0.5f)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+            float _64_h = tint_symbol_1.x;
+            float2 _65_i = float2(_63_g, _64_h);
+            if (false) {
+              float2 _skTemp4 = floor(((_65_i * (255.0f).xx) + (0.5f).xx));
+              _65_i = (_skTemp4 * (0.0039215688593685627f).xx);
+            }
+            float4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+            _66_j = (_66_j * (0.00390625f).xxxx);
+            float4 _67_p = _66_j;
+            float2 _skTemp5 = frac(_57_k);
+            float2 _68_d = _skTemp5;
+            float2 _skTemp6 = smoothstep((0.0f).xx, (1.0f).xx, _68_d);
+            float2 _69_e = _skTemp6;
+            float4 _71_g = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            {
+              int _72_h = 0;
+              while (true) {
+                {
+                  float _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+                  float4 _74_j = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.x), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float4 _75_k = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.y), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float4 _76_l = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.w), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float4 _77_m = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.z), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float2 _78_n = _68_d;
+                  float _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  float _79_o = _skTemp7;
+                  _78_n.x = (_78_n.x - 1.0f);
+                  float _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  float _80_p = _skTemp8;
+                  float _skTemp9 = lerp(_79_o, _80_p, _69_e.x);
+                  float _81_q = _skTemp9;
+                  _78_n.y = (_78_n.y - 1.0f);
+                  float _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  _80_p = _skTemp10;
+                  _78_n.x = (_78_n.x + 1.0f);
+                  float _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  _79_o = _skTemp11;
+                  float _skTemp12 = lerp(_79_o, _80_p, _69_e.x);
+                  float _82_r = _skTemp12;
+                  float _skTemp13 = lerp(_81_q, _82_r, _69_e.y);
+                  set_vector_element(_71_g, _72_h, _skTemp13);
+                }
+                {
+                  _72_h = (_72_h + 1);
+                  if ((_72_h >= 4)) { break; }
+                }
+              }
+            }
+            float4 _83_q = _71_g;
+            if ((_56_d != 0)) {
+              float4 _skTemp14 = abs(_83_q);
+              _83_q = _skTemp14;
+            }
+            _58_l = (_58_l + (_83_q * _60_n));
+            _57_k = (_57_k * (2.0f).xx);
+            _60_n = (_60_n * 0.5f);
+            _59_m = (_59_m * (2.0f).xx);
+          }
+        } else {
+          break;
+        }
+        {
+          _61_o = (_61_o + 1);
+        }
+      }
+    }
+    if ((_56_d == 0)) {
+      _58_l = ((_58_l * (0.5f).xxxx) + (0.5f).xxxx);
+    }
+    float4 _skTemp15 = saturate(_58_l);
+    _58_l = _skTemp15;
+    float _skTemp16 = dot(float3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), float4(float3((float3(_58_l.xyz) * float(_58_l.w))), float(float(_58_l.w))).xyz);
+    float _skTemp17 = saturate(_skTemp16);
+    float4 _84_a = float4(0.0f, 0.0f, 0.0f, _skTemp17);
+    int _85_d = asint(_storage1.Load(((128u * shadingSsboIndex) + 112u)));
+    if (bool(_85_d)) {
+      {
+        float4 _skTemp18 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        if ((_84_a.y < _84_a.z)) {
+          _skTemp18 = float4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+        } else {
+          _skTemp18 = float4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+        }
+        float4 _86_e = _skTemp18;
+        float4 _skTemp19 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        if ((_84_a.x < _86_e.x)) {
+          _skTemp19 = float4(_86_e.x, _84_a.x, _86_e.yw);
+        } else {
+          _skTemp19 = float4(_84_a.x, _86_e.x, _86_e.yz);
+        }
+        float4 _87_f = _skTemp19;
+        float _88_h = _87_f.x;
+        float _skTemp20 = min(_87_f.y, _87_f.z);
+        float _89_i = (_88_h - _skTemp20);
+        float _90_j = (_88_h - (_89_i * 0.5f));
+        float _skTemp21 = abs((_87_f.w + ((_87_f.y - _87_f.z) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+        float _91_k = _skTemp21;
+        float _skTemp22 = abs(((_90_j * 2.0f) - _84_a.w));
+        float _92_l = (_89_i / ((_84_a.w + 0.00009999999747378752f) - _skTemp22));
+        float _93_m = (_90_j / (_84_a.w + 0.00009999999747378752f));
+        _84_a = float4(_91_k, _92_l, _93_m, _84_a.w);
+      }
+    } else {
+      {
+        float _skTemp23 = max(_84_a.w, 0.00009999999747378752f);
+        _84_a = float4((_84_a.xyz / _skTemp23), _84_a.w);
+      }
+    }
+    float4 _94_f = float4((mul(float4(_84_a), _storage1_load_2(((128u * shadingSsboIndex) + 32u))) + asfloat(_storage1.Load4(((128u * shadingSsboIndex) + 96u)))));
+    if (bool(_85_d)) {
+      {
+        float _skTemp24 = abs(((2.0f * _94_f.z) - 1.0f));
+        float _95_b = ((1.0f - _skTemp24) * _94_f.y);
+        float3 _96_c = (_94_f.xxx + float3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+        float3 _skTemp25 = frac(_96_c);
+        float3 _skTemp26 = abs(((_skTemp25 * 6.0f) - 3.0f));
+        float3 _skTemp27 = saturate((_skTemp26 - 1.0f));
+        float3 _97_d = _skTemp27;
+        float4 _skTemp28 = saturate(float4(((((_97_d - 0.5f) * _95_b) + _94_f.z) * _94_f.w), _94_f.w));
+        _94_f = _skTemp28;
+      }
+    } else {
+      {
+        if (bool(asint(_storage1.Load(((128u * shadingSsboIndex) + 116u))))) {
+          float4 _skTemp29 = saturate(_94_f);
+          _94_f = _skTemp29;
+        } else {
+          float _skTemp30 = saturate(_94_f.w);
+          _94_f.w = _skTemp30;
+        }
+        _94_f = float4((_94_f.xyz * _94_f.w), _94_f.w);
+      }
+    }
+    float4 outColor_0 = _94_f;
+    _stageOut.sk_FragColor = outColor_0;
+  }
+}
+
+struct tint_symbol_3 {
+  nointerpolation uint2 ssboIndicesVar : TEXCOORD0;
+  float2 localCoordsVar : TEXCOORD1;
+};
+struct tint_symbol_4 {
+  float4 sk_FragColor : SV_Target0;
+};
+
+FSOut main_inner(FSIn _stageIn) {
+  FSOut _stageOut = (FSOut)0;
+  _skslMain(_stageIn, _stageOut);
+  return _stageOut;
+}
+
+tint_symbol_4 main(tint_symbol_3 tint_symbol_2) {
+  FSIn tint_symbol_5 = {tint_symbol_2.ssboIndicesVar, tint_symbol_2.localCoordsVar};
+  FSOut inner_result = main_inner(tint_symbol_5);
+  tint_symbol_4 wrapper_result = (tint_symbol_4)0;
+  wrapper_result.sk_FragColor = inner_result.sk_FragColor;
+  return wrapper_result;
+}
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/379127084.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..a8d1a1b
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.fxc.hlsl
@@ -0,0 +1,210 @@
+void set_vector_element(inout float4 vec, int idx, float val) {
+  vec = (idx.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : vec;
+}
+
+struct FSIn {
+  uint2 ssboIndicesVar;
+  float2 localCoordsVar;
+};
+struct FSOut {
+  float4 sk_FragColor;
+};
+
+cbuffer cbuffer__uniform0 : register(b0) {
+  uint4 _uniform0[2];
+};
+
+ByteAddressBuffer _storage1 : register(t2);
+static uint shadingSsboIndex = 0u;
+SamplerState permutationsSampler_1_Sampler : register(s0, space1);
+Texture2D<float4> permutationsSampler_1_Texture : register(t1, space1);
+SamplerState noiseSampler_1_Sampler : register(s2, space1);
+Texture2D<float4> noiseSampler_1_Texture : register(t3, space1);
+
+float4x4 _storage1_load_2(uint offset) {
+  return float4x4(asfloat(_storage1.Load4((offset + 0u))), asfloat(_storage1.Load4((offset + 16u))), asfloat(_storage1.Load4((offset + 32u))), asfloat(_storage1.Load4((offset + 48u))));
+}
+
+void _skslMain(FSIn _stageIn, inout FSOut _stageOut) {
+  {
+    shadingSsboIndex = _stageIn.ssboIndicesVar.y;
+    int _56_d = asint(_storage1.Load(((128u * shadingSsboIndex) + 16u)));
+    float2 _57_k = float2(((_stageIn.localCoordsVar + 0.5f) * asfloat(_storage1.Load2((128u * shadingSsboIndex)))));
+    float4 _58_l = (0.0f).xxxx;
+    float2 _59_m = float2(asfloat(_storage1.Load2(((128u * shadingSsboIndex) + 8u))));
+    float _60_n = 1.0f;
+    {
+      int _61_o = 0;
+      while (true) {
+        if ((_61_o < asint(_storage1.Load(((128u * shadingSsboIndex) + 20u))))) {
+          {
+            float4 _62_f = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            float2 _skTemp2 = floor(_57_k);
+            _62_f = float4(_skTemp2, _62_f.zw);
+            _62_f = float4(_62_f.xy, (_62_f.xy + (1.0f).xx));
+            if (bool(asint(_storage1.Load(((128u * shadingSsboIndex) + 24u))))) {
+              float4 _skTemp3 = step(_59_m.xyxy, _62_f);
+              _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+            }
+            float4 tint_symbol = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, float2(float2(((_62_f.x + 0.5f) * 0.00390625f), 0.5f)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+            float _63_g = tint_symbol.x;
+            float4 tint_symbol_1 = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, float2(float2(((_62_f.z + 0.5f) * 0.00390625f), 0.5f)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+            float _64_h = tint_symbol_1.x;
+            float2 _65_i = float2(_63_g, _64_h);
+            if (false) {
+              float2 _skTemp4 = floor(((_65_i * (255.0f).xx) + (0.5f).xx));
+              _65_i = (_skTemp4 * (0.0039215688593685627f).xx);
+            }
+            float4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+            _66_j = (_66_j * (0.00390625f).xxxx);
+            float4 _67_p = _66_j;
+            float2 _skTemp5 = frac(_57_k);
+            float2 _68_d = _skTemp5;
+            float2 _skTemp6 = smoothstep((0.0f).xx, (1.0f).xx, _68_d);
+            float2 _69_e = _skTemp6;
+            float4 _71_g = float4(0.0f, 0.0f, 0.0f, 0.0f);
+            {
+              int _72_h = 0;
+              while (true) {
+                {
+                  float _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+                  float4 _74_j = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.x), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float4 _75_k = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.y), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float4 _76_l = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.w), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float4 _77_m = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, float2(float(_67_p.z), float(_73_i)), clamp(-0.47499999403953552246f, -16.0f, 15.99f));
+                  float2 _78_n = _68_d;
+                  float _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  float _79_o = _skTemp7;
+                  _78_n.x = (_78_n.x - 1.0f);
+                  float _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  float _80_p = _skTemp8;
+                  float _skTemp9 = lerp(_79_o, _80_p, _69_e.x);
+                  float _81_q = _skTemp9;
+                  _78_n.y = (_78_n.y - 1.0f);
+                  float _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  _80_p = _skTemp10;
+                  _78_n.x = (_78_n.x + 1.0f);
+                  float _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  _79_o = _skTemp11;
+                  float _skTemp12 = lerp(_79_o, _80_p, _69_e.x);
+                  float _82_r = _skTemp12;
+                  float _skTemp13 = lerp(_81_q, _82_r, _69_e.y);
+                  set_vector_element(_71_g, _72_h, _skTemp13);
+                }
+                {
+                  _72_h = (_72_h + 1);
+                  if ((_72_h >= 4)) { break; }
+                }
+              }
+            }
+            float4 _83_q = _71_g;
+            if ((_56_d != 0)) {
+              float4 _skTemp14 = abs(_83_q);
+              _83_q = _skTemp14;
+            }
+            _58_l = (_58_l + (_83_q * _60_n));
+            _57_k = (_57_k * (2.0f).xx);
+            _60_n = (_60_n * 0.5f);
+            _59_m = (_59_m * (2.0f).xx);
+          }
+        } else {
+          break;
+        }
+        {
+          _61_o = (_61_o + 1);
+        }
+      }
+    }
+    if ((_56_d == 0)) {
+      _58_l = ((_58_l * (0.5f).xxxx) + (0.5f).xxxx);
+    }
+    float4 _skTemp15 = saturate(_58_l);
+    _58_l = _skTemp15;
+    float _skTemp16 = dot(float3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), float4(float3((float3(_58_l.xyz) * float(_58_l.w))), float(float(_58_l.w))).xyz);
+    float _skTemp17 = saturate(_skTemp16);
+    float4 _84_a = float4(0.0f, 0.0f, 0.0f, _skTemp17);
+    int _85_d = asint(_storage1.Load(((128u * shadingSsboIndex) + 112u)));
+    if (bool(_85_d)) {
+      {
+        float4 _skTemp18 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        if ((_84_a.y < _84_a.z)) {
+          _skTemp18 = float4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+        } else {
+          _skTemp18 = float4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+        }
+        float4 _86_e = _skTemp18;
+        float4 _skTemp19 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+        if ((_84_a.x < _86_e.x)) {
+          _skTemp19 = float4(_86_e.x, _84_a.x, _86_e.yw);
+        } else {
+          _skTemp19 = float4(_84_a.x, _86_e.x, _86_e.yz);
+        }
+        float4 _87_f = _skTemp19;
+        float _88_h = _87_f.x;
+        float _skTemp20 = min(_87_f.y, _87_f.z);
+        float _89_i = (_88_h - _skTemp20);
+        float _90_j = (_88_h - (_89_i * 0.5f));
+        float _skTemp21 = abs((_87_f.w + ((_87_f.y - _87_f.z) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+        float _91_k = _skTemp21;
+        float _skTemp22 = abs(((_90_j * 2.0f) - _84_a.w));
+        float _92_l = (_89_i / ((_84_a.w + 0.00009999999747378752f) - _skTemp22));
+        float _93_m = (_90_j / (_84_a.w + 0.00009999999747378752f));
+        _84_a = float4(_91_k, _92_l, _93_m, _84_a.w);
+      }
+    } else {
+      {
+        float _skTemp23 = max(_84_a.w, 0.00009999999747378752f);
+        _84_a = float4((_84_a.xyz / _skTemp23), _84_a.w);
+      }
+    }
+    float4 _94_f = float4((mul(float4(_84_a), _storage1_load_2(((128u * shadingSsboIndex) + 32u))) + asfloat(_storage1.Load4(((128u * shadingSsboIndex) + 96u)))));
+    if (bool(_85_d)) {
+      {
+        float _skTemp24 = abs(((2.0f * _94_f.z) - 1.0f));
+        float _95_b = ((1.0f - _skTemp24) * _94_f.y);
+        float3 _96_c = (_94_f.xxx + float3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+        float3 _skTemp25 = frac(_96_c);
+        float3 _skTemp26 = abs(((_skTemp25 * 6.0f) - 3.0f));
+        float3 _skTemp27 = saturate((_skTemp26 - 1.0f));
+        float3 _97_d = _skTemp27;
+        float4 _skTemp28 = saturate(float4(((((_97_d - 0.5f) * _95_b) + _94_f.z) * _94_f.w), _94_f.w));
+        _94_f = _skTemp28;
+      }
+    } else {
+      {
+        if (bool(asint(_storage1.Load(((128u * shadingSsboIndex) + 116u))))) {
+          float4 _skTemp29 = saturate(_94_f);
+          _94_f = _skTemp29;
+        } else {
+          float _skTemp30 = saturate(_94_f.w);
+          _94_f.w = _skTemp30;
+        }
+        _94_f = float4((_94_f.xyz * _94_f.w), _94_f.w);
+      }
+    }
+    float4 outColor_0 = _94_f;
+    _stageOut.sk_FragColor = outColor_0;
+  }
+}
+
+struct tint_symbol_3 {
+  nointerpolation uint2 ssboIndicesVar : TEXCOORD0;
+  float2 localCoordsVar : TEXCOORD1;
+};
+struct tint_symbol_4 {
+  float4 sk_FragColor : SV_Target0;
+};
+
+FSOut main_inner(FSIn _stageIn) {
+  FSOut _stageOut = (FSOut)0;
+  _skslMain(_stageIn, _stageOut);
+  return _stageOut;
+}
+
+tint_symbol_4 main(tint_symbol_3 tint_symbol_2) {
+  FSIn tint_symbol_5 = {tint_symbol_2.ssboIndicesVar, tint_symbol_2.localCoordsVar};
+  FSOut inner_result = main_inner(tint_symbol_5);
+  tint_symbol_4 wrapper_result = (tint_symbol_4)0;
+  wrapper_result.sk_FragColor = inner_result.sk_FragColor;
+  return wrapper_result;
+}
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.glsl b/test/tint/bug/tint/379127084.wgsl.expected.glsl
new file mode 100644
index 0000000..04a1123
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.glsl
@@ -0,0 +1,218 @@
+#version 310 es
+precision highp float;
+precision highp int;
+
+
+struct FSUniformData {
+  vec2 baseFrequency_1;
+  vec2 stitchData_1;
+  int noiseType_1;
+  int numOctaves_1;
+  int stitching_1;
+  uint tint_pad_0;
+  mat4 matrix_4;
+  vec4 translate_4;
+  int inHSL_4;
+  int clampRGB_4;
+  uint tint_pad_1;
+  uint tint_pad_2;
+};
+
+struct FSIn {
+  uvec2 ssboIndicesVar;
+  vec2 localCoordsVar;
+};
+
+struct FSOut {
+  vec4 sk_FragColor;
+};
+
+layout(binding = 2, std430)
+buffer FSUniforms_1_ssbo {
+  FSUniformData fsUniformData[];
+} _storage1;
+uint shadingSsboIndex = 0u;
+uniform highp sampler2D permutationsSampler_1_Texture_permutationsSampler_1_Sampler;
+uniform highp sampler2D noiseSampler_1_Texture_noiseSampler_1_Sampler;
+layout(location = 0) flat in uvec2 tint_symbol_loc0_Input;
+layout(location = 1) in vec2 tint_symbol_loc1_Input;
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+void _skslMain(FSIn _stageIn, inout FSOut _stageOut) {
+  shadingSsboIndex = _stageIn.ssboIndicesVar[1u];
+  uint v = shadingSsboIndex;
+  int _56_d = _storage1.fsUniformData[v].noiseType_1;
+  uint v_1 = shadingSsboIndex;
+  vec2 _57_k = vec2(((_stageIn.localCoordsVar + 0.5f) * _storage1.fsUniformData[v_1].baseFrequency_1));
+  vec4 _58_l = vec4(0.0f);
+  uint v_2 = shadingSsboIndex;
+  vec2 _59_m = vec2(_storage1.fsUniformData[v_2].stitchData_1);
+  float _60_n = 1.0f;
+  int _61_o = 0;
+  {
+    while(true) {
+      int v_3 = _61_o;
+      uint v_4 = shadingSsboIndex;
+      if ((v_3 < _storage1.fsUniformData[v_4].numOctaves_1)) {
+        vec4 _62_f = vec4(0.0f);
+        vec2 _skTemp2 = floor(_57_k);
+        _62_f = vec4(_skTemp2, _62_f.zw);
+        _62_f = vec4(_62_f.xy, (_62_f.xy + vec2(1.0f)));
+        uint v_5 = shadingSsboIndex;
+        if (bool(_storage1.fsUniformData[v_5].stitching_1)) {
+          vec4 _skTemp3 = step(_59_m.xyxy, _62_f);
+          _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+        }
+        vec2 v_6 = vec2(vec2(((_62_f.x + 0.5f) * 0.00390625f), 0.5f));
+        float _63_g = texture(permutationsSampler_1_Texture_permutationsSampler_1_Sampler, v_6, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f))[0u];
+        vec2 v_7 = vec2(vec2(((_62_f.z + 0.5f) * 0.00390625f), 0.5f));
+        float _64_h = texture(permutationsSampler_1_Texture_permutationsSampler_1_Sampler, v_7, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f))[0u];
+        vec2 _65_i = vec2(_63_g, _64_h);
+        if (false) {
+          vec2 _skTemp4 = floor(((_65_i * vec2(255.0f)) + vec2(0.5f)));
+          _65_i = (_skTemp4 * vec2(0.0039215688593685627f));
+        }
+        vec4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+        _66_j = (_66_j * vec4(0.00390625f));
+        vec4 _67_p = _66_j;
+        vec2 _skTemp5 = fract(_57_k);
+        vec2 _68_d = _skTemp5;
+        vec2 _skTemp6 = smoothstep(vec2(0.0f), vec2(1.0f), _68_d);
+        vec2 _69_e = _skTemp6;
+        vec4 _71_g = vec4(0.0f);
+        int _72_h = 0;
+        {
+          while(true) {
+            float _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+            float v_8 = float(_67_p[0u]);
+            vec2 v_9 = vec2(v_8, float(_73_i));
+            vec4 _74_j = texture(noiseSampler_1_Texture_noiseSampler_1_Sampler, v_9, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_10 = float(_67_p[1u]);
+            vec2 v_11 = vec2(v_10, float(_73_i));
+            vec4 _75_k = texture(noiseSampler_1_Texture_noiseSampler_1_Sampler, v_11, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_12 = float(_67_p[3u]);
+            vec2 v_13 = vec2(v_12, float(_73_i));
+            vec4 _76_l = texture(noiseSampler_1_Texture_noiseSampler_1_Sampler, v_13, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_14 = float(_67_p[2u]);
+            vec2 v_15 = vec2(v_14, float(_73_i));
+            vec4 _77_m = texture(noiseSampler_1_Texture_noiseSampler_1_Sampler, v_15, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            vec2 _78_n = _68_d;
+            float _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _79_o = _skTemp7;
+            _78_n[0u] = (_78_n.x - 1.0f);
+            float _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _80_p = _skTemp8;
+            float _skTemp9 = mix(_79_o, _80_p, _69_e[0u]);
+            float _81_q = _skTemp9;
+            _78_n[1u] = (_78_n.y - 1.0f);
+            float _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _80_p = _skTemp10;
+            _78_n[0u] = (_78_n.x + 1.0f);
+            float _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _79_o = _skTemp11;
+            float _skTemp12 = mix(_79_o, _80_p, _69_e[0u]);
+            float _82_r = _skTemp12;
+            float _skTemp13 = mix(_81_q, _82_r, _69_e[1u]);
+            _71_g[_72_h] = _skTemp13;
+            {
+              _72_h = (_72_h + 1);
+              if ((_72_h >= 4)) { break; }
+            }
+            continue;
+          }
+        }
+        vec4 _83_q = _71_g;
+        if ((_56_d != 0)) {
+          vec4 _skTemp14 = abs(_83_q);
+          _83_q = _skTemp14;
+        }
+        _58_l = (_58_l + (_83_q * _60_n));
+        _57_k = (_57_k * vec2(2.0f));
+        _60_n = (_60_n * 0.5f);
+        _59_m = (_59_m * vec2(2.0f));
+      } else {
+        break;
+      }
+      {
+        _61_o = (_61_o + 1);
+      }
+      continue;
+    }
+  }
+  if ((_56_d == 0)) {
+    _58_l = ((_58_l * vec4(0.5f)) + vec4(0.5f));
+  }
+  vec4 _skTemp15 = clamp(_58_l, vec4(0.0f), vec4(1.0f));
+  _58_l = _skTemp15;
+  vec3 v_16 = vec3(_58_l.xyz);
+  vec3 v_17 = vec3((v_16 * float(_58_l.w)));
+  float _skTemp16 = dot(vec3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), vec4(v_17, float(float(_58_l.w))).xyz);
+  float _skTemp17 = clamp(_skTemp16, 0.0f, 1.0f);
+  vec4 _84_a = vec4(0.0f, 0.0f, 0.0f, _skTemp17);
+  uint v_18 = shadingSsboIndex;
+  int _85_d = _storage1.fsUniformData[v_18].inHSL_4;
+  if (bool(_85_d)) {
+    vec4 _skTemp18 = vec4(0.0f);
+    if ((_84_a.y < _84_a.z)) {
+      _skTemp18 = vec4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+    } else {
+      _skTemp18 = vec4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+    }
+    vec4 _86_e = _skTemp18;
+    vec4 _skTemp19 = vec4(0.0f);
+    if ((_84_a.x < _86_e[0u])) {
+      _skTemp19 = vec4(_86_e[0u], _84_a.x, _86_e.yw);
+    } else {
+      _skTemp19 = vec4(_84_a.x, _86_e[0u], _86_e.yz);
+    }
+    vec4 _87_f = _skTemp19;
+    float _88_h = _87_f[0u];
+    float _skTemp20 = min(_87_f[1u], _87_f[2u]);
+    float _89_i = (_88_h - _skTemp20);
+    float _90_j = (_88_h - (_89_i * 0.5f));
+    float _skTemp21 = abs((_87_f[3u] + ((_87_f[1u] - _87_f[2u]) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+    float _91_k = _skTemp21;
+    float _skTemp22 = abs(((_90_j * 2.0f) - _84_a.w));
+    float _92_l = (_89_i / ((_84_a.w + 0.00009999999747378752f) - _skTemp22));
+    float _93_m = (_90_j / (_84_a.w + 0.00009999999747378752f));
+    _84_a = vec4(_91_k, _92_l, _93_m, _84_a.w);
+  } else {
+    float _skTemp23 = max(_84_a.w, 0.00009999999747378752f);
+    _84_a = vec4((_84_a.xyz / _skTemp23), _84_a.w);
+  }
+  uint v_19 = shadingSsboIndex;
+  mat4 v_20 = _storage1.fsUniformData[v_19].matrix_4;
+  vec4 v_21 = (v_20 * vec4(_84_a));
+  uint v_22 = shadingSsboIndex;
+  vec4 _94_f = vec4((v_21 + _storage1.fsUniformData[v_22].translate_4));
+  if (bool(_85_d)) {
+    float _skTemp24 = abs(((2.0f * _94_f.z) - 1.0f));
+    float _95_b = ((1.0f - _skTemp24) * _94_f.y);
+    vec3 _96_c = (_94_f.xxx + vec3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+    vec3 _skTemp25 = fract(_96_c);
+    vec3 _skTemp26 = abs(((_skTemp25 * 6.0f) - 3.0f));
+    vec3 _skTemp27 = clamp((_skTemp26 - 1.0f), vec3(0.0f), vec3(1.0f));
+    vec3 _97_d = _skTemp27;
+    vec4 _skTemp28 = clamp(vec4(((((_97_d - 0.5f) * _95_b) + _94_f.z) * _94_f.w), _94_f.w), vec4(0.0f), vec4(1.0f));
+    _94_f = _skTemp28;
+  } else {
+    uint v_23 = shadingSsboIndex;
+    if (bool(_storage1.fsUniformData[v_23].clampRGB_4)) {
+      vec4 _skTemp29 = clamp(_94_f, vec4(0.0f), vec4(1.0f));
+      _94_f = _skTemp29;
+    } else {
+      float _skTemp30 = clamp(_94_f.w, 0.0f, 1.0f);
+      _94_f[3u] = _skTemp30;
+    }
+    _94_f = vec4((_94_f.xyz * _94_f.w), _94_f.w);
+  }
+  vec4 outColor_0 = _94_f;
+  _stageOut.sk_FragColor = outColor_0;
+}
+FSOut tint_symbol_inner(FSIn _stageIn) {
+  FSOut _stageOut = FSOut(vec4(0.0f));
+  _skslMain(_stageIn, _stageOut);
+  return _stageOut;
+}
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner(FSIn(tint_symbol_loc0_Input, tint_symbol_loc1_Input)).sk_FragColor;
+}
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/379127084.wgsl.expected.ir.dxc.hlsl
new file mode 100644
index 0000000..08846db
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.ir.dxc.hlsl
@@ -0,0 +1,212 @@
+struct FSIn {
+  uint2 ssboIndicesVar;
+  float2 localCoordsVar;
+};
+
+struct FSOut {
+  float4 sk_FragColor;
+};
+
+struct main_outputs {
+  float4 FSOut_sk_FragColor : SV_Target0;
+};
+
+struct main_inputs {
+  nointerpolation uint2 FSIn_ssboIndicesVar : TEXCOORD0;
+  float2 FSIn_localCoordsVar : TEXCOORD1;
+};
+
+
+cbuffer cbuffer__uniform0 : register(b0) {
+  uint4 _uniform0[2];
+};
+ByteAddressBuffer _storage1 : register(t2);
+static uint shadingSsboIndex = 0u;
+SamplerState permutationsSampler_1_Sampler : register(s0, space1);
+Texture2D<float4> permutationsSampler_1_Texture : register(t1, space1);
+SamplerState noiseSampler_1_Sampler : register(s2, space1);
+Texture2D<float4> noiseSampler_1_Texture : register(t3, space1);
+float4x4 v(uint offset) {
+  float4 v_1 = asfloat(_storage1.Load4((offset + 0u)));
+  float4 v_2 = asfloat(_storage1.Load4((offset + 16u)));
+  float4 v_3 = asfloat(_storage1.Load4((offset + 32u)));
+  return float4x4(v_1, v_2, v_3, asfloat(_storage1.Load4((offset + 48u))));
+}
+
+void _skslMain(FSIn _stageIn, inout FSOut _stageOut) {
+  shadingSsboIndex = _stageIn.ssboIndicesVar.y;
+  int _56_d = asint(_storage1.Load((16u + (uint(shadingSsboIndex) * 128u))));
+  float2 _57_k = float2(((_stageIn.localCoordsVar + 0.5f) * asfloat(_storage1.Load2((0u + (uint(shadingSsboIndex) * 128u))))));
+  float4 _58_l = (0.0f).xxxx;
+  float2 _59_m = float2(asfloat(_storage1.Load2((8u + (uint(shadingSsboIndex) * 128u)))));
+  float _60_n = 1.0f;
+  int _61_o = int(0);
+  {
+    while(true) {
+      int v_4 = _61_o;
+      if ((v_4 < asint(_storage1.Load((20u + (uint(shadingSsboIndex) * 128u)))))) {
+        float4 _62_f = (0.0f).xxxx;
+        float2 _skTemp2 = floor(_57_k);
+        _62_f = float4(_skTemp2, _62_f.zw);
+        _62_f = float4(_62_f.xy, (_62_f.xy + (1.0f).xx));
+        if (bool(asint(_storage1.Load((24u + (uint(shadingSsboIndex) * 128u)))))) {
+          float4 _skTemp3 = step(_59_m.xyxy, _62_f);
+          _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+        }
+        float2 v_5 = float2(float2(((_62_f.x + 0.5f) * 0.00390625f), 0.5f));
+        float _63_g = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, v_5, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)).x;
+        float2 v_6 = float2(float2(((_62_f.z + 0.5f) * 0.00390625f), 0.5f));
+        float _64_h = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, v_6, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)).x;
+        float2 _65_i = float2(_63_g, _64_h);
+        if (false) {
+          float2 _skTemp4 = floor(((_65_i * (255.0f).xx) + (0.5f).xx));
+          _65_i = (_skTemp4 * (0.0039215688593685627f).xx);
+        }
+        float4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+        _66_j = (_66_j * (0.00390625f).xxxx);
+        float4 _67_p = _66_j;
+        float2 _skTemp5 = frac(_57_k);
+        float2 _68_d = _skTemp5;
+        float2 _skTemp6 = smoothstep((0.0f).xx, (1.0f).xx, _68_d);
+        float2 _69_e = _skTemp6;
+        float4 _71_g = (0.0f).xxxx;
+        int _72_h = int(0);
+        {
+          while(true) {
+            float _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+            float v_7 = float(_67_p.x);
+            float2 v_8 = float2(v_7, float(_73_i));
+            float4 _74_j = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_8, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_9 = float(_67_p.y);
+            float2 v_10 = float2(v_9, float(_73_i));
+            float4 _75_k = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_10, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_11 = float(_67_p.w);
+            float2 v_12 = float2(v_11, float(_73_i));
+            float4 _76_l = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_12, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_13 = float(_67_p.z);
+            float2 v_14 = float2(v_13, float(_73_i));
+            float4 _77_m = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_14, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float2 _78_n = _68_d;
+            float _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _79_o = _skTemp7;
+            _78_n.x = (_78_n.x - 1.0f);
+            float _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _80_p = _skTemp8;
+            float _skTemp9 = lerp(_79_o, _80_p, _69_e.x);
+            float _81_q = _skTemp9;
+            _78_n.y = (_78_n.y - 1.0f);
+            float _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _80_p = _skTemp10;
+            _78_n.x = (_78_n.x + 1.0f);
+            float _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _79_o = _skTemp11;
+            float _skTemp12 = lerp(_79_o, _80_p, _69_e.x);
+            float _82_r = _skTemp12;
+            float _skTemp13 = lerp(_81_q, _82_r, _69_e.y);
+            _71_g[_72_h] = _skTemp13;
+            {
+              _72_h = (_72_h + int(1));
+              if ((_72_h >= int(4))) { break; }
+            }
+            continue;
+          }
+        }
+        float4 _83_q = _71_g;
+        if ((_56_d != int(0))) {
+          float4 _skTemp14 = abs(_83_q);
+          _83_q = _skTemp14;
+        }
+        _58_l = (_58_l + (_83_q * _60_n));
+        _57_k = (_57_k * (2.0f).xx);
+        _60_n = (_60_n * 0.5f);
+        _59_m = (_59_m * (2.0f).xx);
+      } else {
+        break;
+      }
+      {
+        _61_o = (_61_o + int(1));
+      }
+      continue;
+    }
+  }
+  if ((_56_d == int(0))) {
+    _58_l = ((_58_l * (0.5f).xxxx) + (0.5f).xxxx);
+  }
+  float4 _skTemp15 = saturate(_58_l);
+  _58_l = _skTemp15;
+  float3 v_15 = float3(_58_l.xyz);
+  float3 v_16 = float3((v_15 * float(_58_l.w)));
+  float _skTemp16 = dot(float3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), float4(v_16, float(float(_58_l.w))).xyz);
+  float _skTemp17 = saturate(_skTemp16);
+  float4 _84_a = float4(0.0f, 0.0f, 0.0f, _skTemp17);
+  int _85_d = asint(_storage1.Load((112u + (uint(shadingSsboIndex) * 128u))));
+  if (bool(_85_d)) {
+    float4 _skTemp18 = (0.0f).xxxx;
+    if ((_84_a.y < _84_a.z)) {
+      _skTemp18 = float4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+    } else {
+      _skTemp18 = float4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+    }
+    float4 _86_e = _skTemp18;
+    float4 _skTemp19 = (0.0f).xxxx;
+    if ((_84_a.x < _86_e.x)) {
+      _skTemp19 = float4(_86_e.x, _84_a.x, _86_e.yw);
+    } else {
+      _skTemp19 = float4(_84_a.x, _86_e.x, _86_e.yz);
+    }
+    float4 _87_f = _skTemp19;
+    float _88_h = _87_f.x;
+    float _skTemp20 = min(_87_f.y, _87_f.z);
+    float _89_i = (_88_h - _skTemp20);
+    float _90_j = (_88_h - (_89_i * 0.5f));
+    float _skTemp21 = abs((_87_f.w + ((_87_f.y - _87_f.z) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+    float _91_k = _skTemp21;
+    float _skTemp22 = abs(((_90_j * 2.0f) - _84_a.w));
+    float _92_l = (_89_i / ((_84_a.w + 0.00009999999747378752f) - _skTemp22));
+    float _93_m = (_90_j / (_84_a.w + 0.00009999999747378752f));
+    _84_a = float4(_91_k, _92_l, _93_m, _84_a.w);
+  } else {
+    float _skTemp23 = max(_84_a.w, 0.00009999999747378752f);
+    _84_a = float4((_84_a.xyz / _skTemp23), _84_a.w);
+  }
+  float4x4 v_17 = v((32u + (uint(shadingSsboIndex) * 128u)));
+  float4 v_18 = mul(float4(_84_a), v_17);
+  float4 _94_f = float4((v_18 + asfloat(_storage1.Load4((96u + (uint(shadingSsboIndex) * 128u))))));
+  if (bool(_85_d)) {
+    float _skTemp24 = abs(((2.0f * _94_f.z) - 1.0f));
+    float _95_b = ((1.0f - _skTemp24) * _94_f.y);
+    float3 _96_c = (_94_f.xxx + float3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+    float3 _skTemp25 = frac(_96_c);
+    float3 _skTemp26 = abs(((_skTemp25 * 6.0f) - 3.0f));
+    float3 _skTemp27 = saturate((_skTemp26 - 1.0f));
+    float3 _97_d = _skTemp27;
+    float4 _skTemp28 = saturate(float4(((((_97_d - 0.5f) * _95_b) + _94_f.z) * _94_f.w), _94_f.w));
+    _94_f = _skTemp28;
+  } else {
+    if (bool(asint(_storage1.Load((116u + (uint(shadingSsboIndex) * 128u)))))) {
+      float4 _skTemp29 = saturate(_94_f);
+      _94_f = _skTemp29;
+    } else {
+      float _skTemp30 = saturate(_94_f.w);
+      _94_f.w = _skTemp30;
+    }
+    _94_f = float4((_94_f.xyz * _94_f.w), _94_f.w);
+  }
+  float4 outColor_0 = _94_f;
+  _stageOut.sk_FragColor = outColor_0;
+}
+
+FSOut main_inner(FSIn _stageIn) {
+  FSOut _stageOut = (FSOut)0;
+  _skslMain(_stageIn, _stageOut);
+  FSOut v_19 = _stageOut;
+  return v_19;
+}
+
+main_outputs main(main_inputs inputs) {
+  FSIn v_20 = {inputs.FSIn_ssboIndicesVar, inputs.FSIn_localCoordsVar};
+  FSOut v_21 = main_inner(v_20);
+  main_outputs v_22 = {v_21.sk_FragColor};
+  return v_22;
+}
+
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/379127084.wgsl.expected.ir.fxc.hlsl
new file mode 100644
index 0000000..1b73032
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.ir.fxc.hlsl
@@ -0,0 +1,214 @@
+struct FSIn {
+  uint2 ssboIndicesVar;
+  float2 localCoordsVar;
+};
+
+struct FSOut {
+  float4 sk_FragColor;
+};
+
+struct main_outputs {
+  float4 FSOut_sk_FragColor : SV_Target0;
+};
+
+struct main_inputs {
+  nointerpolation uint2 FSIn_ssboIndicesVar : TEXCOORD0;
+  float2 FSIn_localCoordsVar : TEXCOORD1;
+};
+
+
+cbuffer cbuffer__uniform0 : register(b0) {
+  uint4 _uniform0[2];
+};
+ByteAddressBuffer _storage1 : register(t2);
+static uint shadingSsboIndex = 0u;
+SamplerState permutationsSampler_1_Sampler : register(s0, space1);
+Texture2D<float4> permutationsSampler_1_Texture : register(t1, space1);
+SamplerState noiseSampler_1_Sampler : register(s2, space1);
+Texture2D<float4> noiseSampler_1_Texture : register(t3, space1);
+float4x4 v(uint offset) {
+  float4 v_1 = asfloat(_storage1.Load4((offset + 0u)));
+  float4 v_2 = asfloat(_storage1.Load4((offset + 16u)));
+  float4 v_3 = asfloat(_storage1.Load4((offset + 32u)));
+  return float4x4(v_1, v_2, v_3, asfloat(_storage1.Load4((offset + 48u))));
+}
+
+void _skslMain(FSIn _stageIn, inout FSOut _stageOut) {
+  shadingSsboIndex = _stageIn.ssboIndicesVar.y;
+  int _56_d = asint(_storage1.Load((16u + (uint(shadingSsboIndex) * 128u))));
+  float2 _57_k = float2(((_stageIn.localCoordsVar + 0.5f) * asfloat(_storage1.Load2((0u + (uint(shadingSsboIndex) * 128u))))));
+  float4 _58_l = (0.0f).xxxx;
+  float2 _59_m = float2(asfloat(_storage1.Load2((8u + (uint(shadingSsboIndex) * 128u)))));
+  float _60_n = 1.0f;
+  int _61_o = int(0);
+  {
+    while(true) {
+      int v_4 = _61_o;
+      if ((v_4 < asint(_storage1.Load((20u + (uint(shadingSsboIndex) * 128u)))))) {
+        float4 _62_f = (0.0f).xxxx;
+        float2 _skTemp2 = floor(_57_k);
+        _62_f = float4(_skTemp2, _62_f.zw);
+        _62_f = float4(_62_f.xy, (_62_f.xy + (1.0f).xx));
+        if (bool(asint(_storage1.Load((24u + (uint(shadingSsboIndex) * 128u)))))) {
+          float4 _skTemp3 = step(_59_m.xyxy, _62_f);
+          _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+        }
+        float2 v_5 = float2(float2(((_62_f.x + 0.5f) * 0.00390625f), 0.5f));
+        float _63_g = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, v_5, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)).x;
+        float2 v_6 = float2(float2(((_62_f.z + 0.5f) * 0.00390625f), 0.5f));
+        float _64_h = permutationsSampler_1_Texture.SampleBias(permutationsSampler_1_Sampler, v_6, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)).x;
+        float2 _65_i = float2(_63_g, _64_h);
+        if (false) {
+          float2 _skTemp4 = floor(((_65_i * (255.0f).xx) + (0.5f).xx));
+          _65_i = (_skTemp4 * (0.0039215688593685627f).xx);
+        }
+        float4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+        _66_j = (_66_j * (0.00390625f).xxxx);
+        float4 _67_p = _66_j;
+        float2 _skTemp5 = frac(_57_k);
+        float2 _68_d = _skTemp5;
+        float2 _skTemp6 = smoothstep((0.0f).xx, (1.0f).xx, _68_d);
+        float2 _69_e = _skTemp6;
+        float4 _71_g = (0.0f).xxxx;
+        int _72_h = int(0);
+        {
+          while(true) {
+            float _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+            float v_7 = float(_67_p.x);
+            float2 v_8 = float2(v_7, float(_73_i));
+            float4 _74_j = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_8, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_9 = float(_67_p.y);
+            float2 v_10 = float2(v_9, float(_73_i));
+            float4 _75_k = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_10, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_11 = float(_67_p.w);
+            float2 v_12 = float2(v_11, float(_73_i));
+            float4 _76_l = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_12, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float v_13 = float(_67_p.z);
+            float2 v_14 = float2(v_13, float(_73_i));
+            float4 _77_m = noiseSampler_1_Texture.SampleBias(noiseSampler_1_Sampler, v_14, clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f));
+            float2 _78_n = _68_d;
+            float _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _79_o = _skTemp7;
+            _78_n.x = (_78_n.x - 1.0f);
+            float _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _80_p = _skTemp8;
+            float _skTemp9 = lerp(_79_o, _80_p, _69_e.x);
+            float _81_q = _skTemp9;
+            _78_n.y = (_78_n.y - 1.0f);
+            float _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _80_p = _skTemp10;
+            _78_n.x = (_78_n.x + 1.0f);
+            float _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _79_o = _skTemp11;
+            float _skTemp12 = lerp(_79_o, _80_p, _69_e.x);
+            float _82_r = _skTemp12;
+            float _skTemp13 = lerp(_81_q, _82_r, _69_e.y);
+            float4 v_15 = _71_g;
+            float4 v_16 = _72_h.xxxx;
+            _71_g = (((v_16 == float4(int(0), int(1), int(2), int(3)))) ? (_skTemp13.xxxx) : (v_15));
+            {
+              _72_h = (_72_h + int(1));
+              if ((_72_h >= int(4))) { break; }
+            }
+            continue;
+          }
+        }
+        float4 _83_q = _71_g;
+        if ((_56_d != int(0))) {
+          float4 _skTemp14 = abs(_83_q);
+          _83_q = _skTemp14;
+        }
+        _58_l = (_58_l + (_83_q * _60_n));
+        _57_k = (_57_k * (2.0f).xx);
+        _60_n = (_60_n * 0.5f);
+        _59_m = (_59_m * (2.0f).xx);
+      } else {
+        break;
+      }
+      {
+        _61_o = (_61_o + int(1));
+      }
+      continue;
+    }
+  }
+  if ((_56_d == int(0))) {
+    _58_l = ((_58_l * (0.5f).xxxx) + (0.5f).xxxx);
+  }
+  float4 _skTemp15 = saturate(_58_l);
+  _58_l = _skTemp15;
+  float3 v_17 = float3(_58_l.xyz);
+  float3 v_18 = float3((v_17 * float(_58_l.w)));
+  float _skTemp16 = dot(float3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), float4(v_18, float(float(_58_l.w))).xyz);
+  float _skTemp17 = saturate(_skTemp16);
+  float4 _84_a = float4(0.0f, 0.0f, 0.0f, _skTemp17);
+  int _85_d = asint(_storage1.Load((112u + (uint(shadingSsboIndex) * 128u))));
+  if (bool(_85_d)) {
+    float4 _skTemp18 = (0.0f).xxxx;
+    if ((_84_a.y < _84_a.z)) {
+      _skTemp18 = float4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+    } else {
+      _skTemp18 = float4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+    }
+    float4 _86_e = _skTemp18;
+    float4 _skTemp19 = (0.0f).xxxx;
+    if ((_84_a.x < _86_e.x)) {
+      _skTemp19 = float4(_86_e.x, _84_a.x, _86_e.yw);
+    } else {
+      _skTemp19 = float4(_84_a.x, _86_e.x, _86_e.yz);
+    }
+    float4 _87_f = _skTemp19;
+    float _88_h = _87_f.x;
+    float _skTemp20 = min(_87_f.y, _87_f.z);
+    float _89_i = (_88_h - _skTemp20);
+    float _90_j = (_88_h - (_89_i * 0.5f));
+    float _skTemp21 = abs((_87_f.w + ((_87_f.y - _87_f.z) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+    float _91_k = _skTemp21;
+    float _skTemp22 = abs(((_90_j * 2.0f) - _84_a.w));
+    float _92_l = (_89_i / ((_84_a.w + 0.00009999999747378752f) - _skTemp22));
+    float _93_m = (_90_j / (_84_a.w + 0.00009999999747378752f));
+    _84_a = float4(_91_k, _92_l, _93_m, _84_a.w);
+  } else {
+    float _skTemp23 = max(_84_a.w, 0.00009999999747378752f);
+    _84_a = float4((_84_a.xyz / _skTemp23), _84_a.w);
+  }
+  float4x4 v_19 = v((32u + (uint(shadingSsboIndex) * 128u)));
+  float4 v_20 = mul(float4(_84_a), v_19);
+  float4 _94_f = float4((v_20 + asfloat(_storage1.Load4((96u + (uint(shadingSsboIndex) * 128u))))));
+  if (bool(_85_d)) {
+    float _skTemp24 = abs(((2.0f * _94_f.z) - 1.0f));
+    float _95_b = ((1.0f - _skTemp24) * _94_f.y);
+    float3 _96_c = (_94_f.xxx + float3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+    float3 _skTemp25 = frac(_96_c);
+    float3 _skTemp26 = abs(((_skTemp25 * 6.0f) - 3.0f));
+    float3 _skTemp27 = saturate((_skTemp26 - 1.0f));
+    float3 _97_d = _skTemp27;
+    float4 _skTemp28 = saturate(float4(((((_97_d - 0.5f) * _95_b) + _94_f.z) * _94_f.w), _94_f.w));
+    _94_f = _skTemp28;
+  } else {
+    if (bool(asint(_storage1.Load((116u + (uint(shadingSsboIndex) * 128u)))))) {
+      float4 _skTemp29 = saturate(_94_f);
+      _94_f = _skTemp29;
+    } else {
+      float _skTemp30 = saturate(_94_f.w);
+      _94_f.w = _skTemp30;
+    }
+    _94_f = float4((_94_f.xyz * _94_f.w), _94_f.w);
+  }
+  float4 outColor_0 = _94_f;
+  _stageOut.sk_FragColor = outColor_0;
+}
+
+FSOut main_inner(FSIn _stageIn) {
+  FSOut _stageOut = (FSOut)0;
+  _skslMain(_stageIn, _stageOut);
+  FSOut v_21 = _stageOut;
+  return v_21;
+}
+
+main_outputs main(main_inputs inputs) {
+  FSIn v_22 = {inputs.FSIn_ssboIndicesVar, inputs.FSIn_localCoordsVar};
+  FSOut v_23 = main_inner(v_22);
+  main_outputs v_24 = {v_23.sk_FragColor};
+  return v_24;
+}
+
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.ir.msl b/test/tint/bug/tint/379127084.wgsl.expected.ir.msl
new file mode 100644
index 0000000..7c34d28
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.ir.msl
@@ -0,0 +1,246 @@
+#include <metal_stdlib>
+using namespace metal;
+
+struct FSIn {
+  uint2 ssboIndicesVar;
+  float2 localCoordsVar;
+};
+
+struct FSOut {
+  float4 sk_FragColor;
+};
+
+struct IntrinsicUniforms {
+  float4 viewport;
+  float4 dstCopyBounds;
+};
+
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
+
+struct FSUniformData {
+  /* 0x0000 */ float2 baseFrequency_1;
+  /* 0x0008 */ float2 stitchData_1;
+  /* 0x0010 */ int noiseType_1;
+  /* 0x0014 */ int numOctaves_1;
+  /* 0x0018 */ int stitching_1;
+  /* 0x001c */ tint_array<int8_t, 4> tint_pad;
+  /* 0x0020 */ float4x4 matrix_4;
+  /* 0x0060 */ float4 translate_4;
+  /* 0x0070 */ int inHSL_4;
+  /* 0x0074 */ int clampRGB_4;
+  /* 0x0078 */ tint_array<int8_t, 8> tint_pad_1;
+};
+
+struct FSUniforms {
+  /* 0x0000 */ tint_array<FSUniformData, 1> fsUniformData;
+};
+
+struct tint_module_vars_struct {
+  const constant IntrinsicUniforms* _uniform0;
+  const device FSUniforms* _storage1;
+  thread uint* shadingSsboIndex;
+  sampler permutationsSampler_1_Sampler;
+  texture2d<float, access::sample> permutationsSampler_1_Texture;
+  sampler noiseSampler_1_Sampler;
+  texture2d<float, access::sample> noiseSampler_1_Texture;
+};
+
+#define TINT_ISOLATE_UB(VOLATILE_NAME) \
+  {volatile bool VOLATILE_NAME = false; if (VOLATILE_NAME) break;}
+
+struct tint_symbol_outputs {
+  float4 FSOut_sk_FragColor [[color(0)]];
+};
+
+struct tint_symbol_inputs {
+  uint2 FSIn_ssboIndicesVar [[user(locn0)]] [[flat]];
+  float2 FSIn_localCoordsVar [[user(locn1)]];
+};
+
+void _skslMain(FSIn _stageIn, thread FSOut* const _stageOut, tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.shadingSsboIndex) = _stageIn.ssboIndicesVar[1u];
+  int const _56_d = (*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].noiseType_1;
+  float2 _57_k = float2(((_stageIn.localCoordsVar + 0.5f) * (*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].baseFrequency_1));
+  float4 _58_l = float4(0.0f);
+  float2 _59_m = float2((*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].stitchData_1);
+  float _60_n = 1.0f;
+  int _61_o = 0;
+  {
+    while(true) {
+      TINT_ISOLATE_UB(tint_volatile_false)
+      if ((_61_o < (*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].numOctaves_1)) {
+        float4 _62_f = 0.0f;
+        float2 const _skTemp2 = floor(_57_k);
+        _62_f = float4(_skTemp2, _62_f.zw);
+        _62_f = float4(_62_f.xy, (_62_f.xy + float2(1.0f)));
+        if (bool((*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].stitching_1)) {
+          float4 const _skTemp3 = step(_59_m.xyxy, _62_f);
+          _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+        }
+        float2 const v = float2(float2(((_62_f[0u] + 0.5f) * 0.00390625f), 0.5f));
+        float const _63_g = tint_module_vars.permutationsSampler_1_Texture.sample(tint_module_vars.permutationsSampler_1_Sampler, v, bias(clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)))[0u];
+        float2 const v_1 = float2(float2(((_62_f[2u] + 0.5f) * 0.00390625f), 0.5f));
+        float const _64_h = tint_module_vars.permutationsSampler_1_Texture.sample(tint_module_vars.permutationsSampler_1_Sampler, v_1, bias(clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)))[0u];
+        float2 _65_i = float2(_63_g, _64_h);
+        if (false) {
+          float2 const _skTemp4 = floor(((_65_i * float2(255.0f)) + float2(0.5f)));
+          _65_i = (_skTemp4 * float2(0.0039215688593685627f));
+        }
+        float4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+        _66_j = (_66_j * float4(0.00390625f));
+        float4 const _67_p = _66_j;
+        float2 const _skTemp5 = fract(_57_k);
+        float2 const _68_d = _skTemp5;
+        float2 const _skTemp6 = smoothstep(float2(0.0f), float2(1.0f), _68_d);
+        float2 const _69_e = _skTemp6;
+        float4 _71_g = 0.0f;
+        int _72_h = 0;
+        {
+          while(true) {
+            TINT_ISOLATE_UB(tint_volatile_false_1)
+            float const _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+            float const v_2 = float(_67_p[0u]);
+            float2 const v_3 = float2(v_2, float(_73_i));
+            float4 const _74_j = tint_module_vars.noiseSampler_1_Texture.sample(tint_module_vars.noiseSampler_1_Sampler, v_3, bias(clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)));
+            float const v_4 = float(_67_p[1u]);
+            float2 const v_5 = float2(v_4, float(_73_i));
+            float4 const _75_k = tint_module_vars.noiseSampler_1_Texture.sample(tint_module_vars.noiseSampler_1_Sampler, v_5, bias(clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)));
+            float const v_6 = float(_67_p[3u]);
+            float2 const v_7 = float2(v_6, float(_73_i));
+            float4 const _76_l = tint_module_vars.noiseSampler_1_Texture.sample(tint_module_vars.noiseSampler_1_Sampler, v_7, bias(clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)));
+            float const v_8 = float(_67_p[2u]);
+            float2 const v_9 = float2(v_8, float(_73_i));
+            float4 const _77_m = tint_module_vars.noiseSampler_1_Texture.sample(tint_module_vars.noiseSampler_1_Sampler, v_9, bias(clamp(-0.47499999403953552246f, -16.0f, 15.9899997711181640625f)));
+            float2 _78_n = _68_d;
+            float const _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _79_o = _skTemp7;
+            _78_n[0u] = (_78_n[0u] - 1.0f);
+            float const _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            float _80_p = _skTemp8;
+            float const _skTemp9 = mix(_79_o, _80_p, _69_e[0u]);
+            float const _81_q = _skTemp9;
+            _78_n[1u] = (_78_n[1u] - 1.0f);
+            float const _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _80_p = _skTemp10;
+            _78_n[0u] = (_78_n[0u] + 1.0f);
+            float const _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+            _79_o = _skTemp11;
+            float const _skTemp12 = mix(_79_o, _80_p, _69_e[0u]);
+            float const _82_r = _skTemp12;
+            float const _skTemp13 = mix(_81_q, _82_r, _69_e[1u]);
+            _71_g[_72_h] = _skTemp13;
+            {
+              _72_h = as_type<int>((as_type<uint>(_72_h) + as_type<uint>(1)));
+              if ((_72_h >= 4)) { break; }
+            }
+            continue;
+          }
+        }
+        float4 _83_q = _71_g;
+        if ((_56_d != 0)) {
+          float4 const _skTemp14 = abs(_83_q);
+          _83_q = _skTemp14;
+        }
+        _58_l = (_58_l + (_83_q * _60_n));
+        _57_k = (_57_k * float2(2.0f));
+        _60_n = (_60_n * 0.5f);
+        _59_m = (_59_m * float2(2.0f));
+      } else {
+        break;
+      }
+      {
+        _61_o = as_type<int>((as_type<uint>(_61_o) + as_type<uint>(1)));
+      }
+      continue;
+    }
+  }
+  if ((_56_d == 0)) {
+    _58_l = ((_58_l * float4(0.5f)) + float4(0.5f));
+  }
+  float4 const _skTemp15 = saturate(_58_l);
+  _58_l = _skTemp15;
+  float3 const v_10 = float3(_58_l.xyz);
+  float3 const v_11 = float3((v_10 * float(_58_l[3u])));
+  float const _skTemp16 = dot(float3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), float4(v_11, float(float(_58_l[3u]))).xyz);
+  float const _skTemp17 = saturate(_skTemp16);
+  float4 _84_a = float4(0.0f, 0.0f, 0.0f, _skTemp17);
+  int const _85_d = (*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].inHSL_4;
+  if (bool(_85_d)) {
+    float4 _skTemp18 = 0.0f;
+    if ((_84_a[1u] < _84_a[2u])) {
+      _skTemp18 = float4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+    } else {
+      _skTemp18 = float4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+    }
+    float4 const _86_e = _skTemp18;
+    float4 _skTemp19 = 0.0f;
+    if ((_84_a[0u] < _86_e[0u])) {
+      _skTemp19 = float4(_86_e[0u], _84_a[0u], _86_e.yw);
+    } else {
+      _skTemp19 = float4(_84_a[0u], _86_e[0u], _86_e.yz);
+    }
+    float4 const _87_f = _skTemp19;
+    float const _88_h = _87_f[0u];
+    float const _skTemp20 = min(_87_f[1u], _87_f[2u]);
+    float const _89_i = (_88_h - _skTemp20);
+    float const _90_j = (_88_h - (_89_i * 0.5f));
+    float const _skTemp21 = abs((_87_f[3u] + ((_87_f[1u] - _87_f[2u]) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+    float const _91_k = _skTemp21;
+    float const _skTemp22 = abs(((_90_j * 2.0f) - _84_a[3u]));
+    float const _92_l = (_89_i / ((_84_a[3u] + 0.00009999999747378752f) - _skTemp22));
+    float const _93_m = (_90_j / (_84_a[3u] + 0.00009999999747378752f));
+    _84_a = float4(_91_k, _92_l, _93_m, _84_a[3u]);
+  } else {
+    float const _skTemp23 = max(_84_a[3u], 0.00009999999747378752f);
+    _84_a = float4((_84_a.xyz / _skTemp23), _84_a[3u]);
+  }
+  float4x4 const v_12 = (*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].matrix_4;
+  float4 const v_13 = (v_12 * float4(_84_a));
+  float4 _94_f = float4((v_13 + (*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].translate_4));
+  if (bool(_85_d)) {
+    float const _skTemp24 = abs(((2.0f * _94_f[2u]) - 1.0f));
+    float const _95_b = ((1.0f - _skTemp24) * _94_f[1u]);
+    float3 const _96_c = (_94_f.xxx + float3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+    float3 const _skTemp25 = fract(_96_c);
+    float3 const _skTemp26 = abs(((_skTemp25 * 6.0f) - 3.0f));
+    float3 const _skTemp27 = saturate((_skTemp26 - 1.0f));
+    float3 const _97_d = _skTemp27;
+    float4 const _skTemp28 = saturate(float4(((((_97_d - 0.5f) * _95_b) + _94_f[2u]) * _94_f[3u]), _94_f[3u]));
+    _94_f = _skTemp28;
+  } else {
+    if (bool((*tint_module_vars._storage1).fsUniformData[(*tint_module_vars.shadingSsboIndex)].clampRGB_4)) {
+      float4 const _skTemp29 = saturate(_94_f);
+      _94_f = _skTemp29;
+    } else {
+      float const _skTemp30 = saturate(_94_f[3u]);
+      _94_f[3u] = _skTemp30;
+    }
+    _94_f = float4((_94_f.xyz * _94_f[3u]), _94_f[3u]);
+  }
+  float4 const outColor_0 = _94_f;
+  (*_stageOut).sk_FragColor = outColor_0;
+}
+
+FSOut tint_symbol_inner(FSIn _stageIn, tint_module_vars_struct tint_module_vars) {
+  FSOut _stageOut = {};
+  _skslMain(_stageIn, (&_stageOut), tint_module_vars);
+  return _stageOut;
+}
+
+fragment tint_symbol_outputs tint_symbol(tint_symbol_inputs inputs [[stage_in]], const device FSUniforms* _storage1 [[buffer(0)]], sampler permutationsSampler_1_Sampler [[sampler(0)]], texture2d<float, access::sample> permutationsSampler_1_Texture [[texture(0)]], sampler noiseSampler_1_Sampler [[sampler(1)]], texture2d<float, access::sample> noiseSampler_1_Texture [[texture(1)]]) {
+  thread uint shadingSsboIndex = 0u;
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{._storage1=_storage1, .shadingSsboIndex=(&shadingSsboIndex), .permutationsSampler_1_Sampler=permutationsSampler_1_Sampler, .permutationsSampler_1_Texture=permutationsSampler_1_Texture, .noiseSampler_1_Sampler=noiseSampler_1_Sampler, .noiseSampler_1_Texture=noiseSampler_1_Texture};
+  tint_symbol_outputs tint_wrapper_result = {};
+  tint_wrapper_result.FSOut_sk_FragColor = tint_symbol_inner(FSIn{.ssboIndicesVar=inputs.FSIn_ssboIndicesVar, .localCoordsVar=inputs.FSIn_localCoordsVar}, tint_module_vars).sk_FragColor;
+  return tint_wrapper_result;
+}
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.msl b/test/tint/bug/tint/379127084.wgsl.expected.msl
new file mode 100644
index 0000000..93c3b5c
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.msl
@@ -0,0 +1,243 @@
+#include <metal_stdlib>
+
+using namespace metal;
+
+template<typename T, size_t N>
+struct tint_array {
+    const constant T& operator[](size_t i) const constant { return elements[i]; }
+    device T& operator[](size_t i) device { return elements[i]; }
+    const device T& operator[](size_t i) const device { return elements[i]; }
+    thread T& operator[](size_t i) thread { return elements[i]; }
+    const thread T& operator[](size_t i) const thread { return elements[i]; }
+    threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+    const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+    T elements[N];
+};
+
+#define TINT_ISOLATE_UB(VOLATILE_NAME) \
+  {volatile bool VOLATILE_NAME = false; if (VOLATILE_NAME) break;}
+
+struct tint_private_vars_struct {
+  uint shadingSsboIndex;
+};
+
+struct FSIn {
+  uint2 ssboIndicesVar;
+  float2 localCoordsVar;
+};
+
+struct FSOut {
+  float4 sk_FragColor;
+};
+
+struct IntrinsicUniforms {
+  float4 viewport;
+  float4 dstCopyBounds;
+};
+
+struct FSUniformData {
+  /* 0x0000 */ float2 baseFrequency_1;
+  /* 0x0008 */ float2 stitchData_1;
+  /* 0x0010 */ int noiseType_1;
+  /* 0x0014 */ int numOctaves_1;
+  /* 0x0018 */ int stitching_1;
+  /* 0x001c */ tint_array<int8_t, 4> tint_pad;
+  /* 0x0020 */ float4x4 matrix_4;
+  /* 0x0060 */ float4 translate_4;
+  /* 0x0070 */ int inHSL_4;
+  /* 0x0074 */ int clampRGB_4;
+  /* 0x0078 */ tint_array<int8_t, 8> tint_pad_1;
+};
+
+struct FSUniforms {
+  /* 0x0000 */ tint_array<FSUniformData, 1> fsUniformData;
+};
+
+void _skslMain(FSIn _stageIn, thread FSOut* const _stageOut, thread tint_private_vars_struct* const tint_private_vars, const device FSUniforms* const tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, sampler tint_symbol_9, texture2d<float, access::sample> tint_symbol_10, sampler tint_symbol_11) {
+  {
+    (*(tint_private_vars)).shadingSsboIndex = _stageIn.ssboIndicesVar[1];
+    int const _56_d = (*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].noiseType_1;
+    float2 _57_k = float2(((_stageIn.localCoordsVar + 0.5f) * (*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].baseFrequency_1));
+    float4 _58_l = float4(0.0f);
+    float2 _59_m = float2((*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].stitchData_1);
+    float _60_n = 1.0f;
+    {
+      int _61_o = 0;
+      while(true) {
+        TINT_ISOLATE_UB(tint_volatile_false);
+        if ((_61_o < (*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].numOctaves_1)) {
+          {
+            float4 _62_f = 0.0f;
+            float2 const _skTemp2 = floor(_57_k);
+            _62_f = float4(_skTemp2, _62_f.zw);
+            _62_f = float4(_62_f.xy, (_62_f.xy + float2(1.0f)));
+            if (bool((*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].stitching_1)) {
+              float4 const _skTemp3 = step(_59_m.xyxy, _62_f);
+              _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+            }
+            float4 const tint_symbol_1 = tint_symbol_8.sample(tint_symbol_9, float2(float2(((_62_f[0] + 0.5f) * 0.00390625f), 0.5f)), bias(-0.47499999403953552246f));
+            float const _63_g = tint_symbol_1[0];
+            float4 const tint_symbol_2 = tint_symbol_8.sample(tint_symbol_9, float2(float2(((_62_f[2] + 0.5f) * 0.00390625f), 0.5f)), bias(-0.47499999403953552246f));
+            float const _64_h = tint_symbol_2[0];
+            float2 _65_i = float2(_63_g, _64_h);
+            if (false) {
+              float2 const _skTemp4 = floor(((_65_i * float2(255.0f)) + float2(0.5f)));
+              _65_i = (_skTemp4 * float2(0.0039215688593685627f));
+            }
+            float4 _66_j = ((256.0f * _65_i.xyxy) + _62_f.yyww);
+            _66_j = (_66_j * float4(0.00390625f));
+            float4 const _67_p = _66_j;
+            float2 const _skTemp5 = fract(_57_k);
+            float2 const _68_d = _skTemp5;
+            float2 const _skTemp6 = smoothstep(float2(0.0f), float2(1.0f), _68_d);
+            float2 const _69_e = _skTemp6;
+            float4 _71_g = 0.0f;
+            {
+              int _72_h = 0;
+              while(true) {
+                TINT_ISOLATE_UB(tint_volatile_false_1);
+                {
+                  float const _73_i = ((float(_72_h) + 0.5f) * 0.25f);
+                  float4 const _74_j = tint_symbol_10.sample(tint_symbol_11, float2(float(_67_p[0]), float(_73_i)), bias(-0.47499999403953552246f));
+                  float4 const _75_k = tint_symbol_10.sample(tint_symbol_11, float2(float(_67_p[1]), float(_73_i)), bias(-0.47499999403953552246f));
+                  float4 const _76_l = tint_symbol_10.sample(tint_symbol_11, float2(float(_67_p[3]), float(_73_i)), bias(-0.47499999403953552246f));
+                  float4 const _77_m = tint_symbol_10.sample(tint_symbol_11, float2(float(_67_p[2]), float(_73_i)), bias(-0.47499999403953552246f));
+                  float2 _78_n = _68_d;
+                  float const _skTemp7 = dot((((_74_j.yw + (_74_j.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  float _79_o = _skTemp7;
+                  _78_n[0] = (_78_n[0] - 1.0f);
+                  float const _skTemp8 = dot((((_75_k.yw + (_75_k.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  float _80_p = _skTemp8;
+                  float const _skTemp9 = mix(_79_o, _80_p, _69_e[0]);
+                  float const _81_q = _skTemp9;
+                  _78_n[1] = (_78_n[1] - 1.0f);
+                  float const _skTemp10 = dot((((_76_l.yw + (_76_l.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  _80_p = _skTemp10;
+                  _78_n[0] = (_78_n[0] + 1.0f);
+                  float const _skTemp11 = dot((((_77_m.yw + (_77_m.xz * 0.00390625f)) * 2.0f) - 1.0f), _78_n);
+                  _79_o = _skTemp11;
+                  float const _skTemp12 = mix(_79_o, _80_p, _69_e[0]);
+                  float const _82_r = _skTemp12;
+                  float const _skTemp13 = mix(_81_q, _82_r, _69_e[1]);
+                  _71_g[_72_h] = _skTemp13;
+                }
+                {
+                  _72_h = as_type<int>((as_type<uint>(_72_h) + as_type<uint>(1)));
+                  if ((_72_h >= 4)) { break; }
+                }
+              }
+            }
+            float4 _83_q = _71_g;
+            if ((_56_d != 0)) {
+              float4 const _skTemp14 = fabs(_83_q);
+              _83_q = _skTemp14;
+            }
+            _58_l = (_58_l + (_83_q * _60_n));
+            _57_k = (_57_k * float2(2.0f));
+            _60_n = (_60_n * 0.5f);
+            _59_m = (_59_m * float2(2.0f));
+          }
+        } else {
+          break;
+        }
+        {
+          _61_o = as_type<int>((as_type<uint>(_61_o) + as_type<uint>(1)));
+        }
+      }
+    }
+    if ((_56_d == 0)) {
+      _58_l = ((_58_l * float4(0.5f)) + float4(0.5f));
+    }
+    float4 const _skTemp15 = saturate(_58_l);
+    _58_l = _skTemp15;
+    float const _skTemp16 = dot(float3(0.21259999275207519531f, 0.71520000696182250977f, 0.07220000028610229492f), float4(float3((float3(_58_l.xyz) * float(_58_l[3]))), float(float(_58_l[3]))).xyz);
+    float const _skTemp17 = saturate(_skTemp16);
+    float4 _84_a = float4(0.0f, 0.0f, 0.0f, _skTemp17);
+    int const _85_d = (*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].inHSL_4;
+    if (bool(_85_d)) {
+      {
+        float4 _skTemp18 = 0.0f;
+        if ((_84_a[1] < _84_a[2])) {
+          _skTemp18 = float4(_84_a.zy, -1.0f, 0.6666666865348815918f);
+        } else {
+          _skTemp18 = float4(_84_a.yz, 0.0f, -0.3333333432674407959f);
+        }
+        float4 const _86_e = _skTemp18;
+        float4 _skTemp19 = 0.0f;
+        if ((_84_a[0] < _86_e[0])) {
+          _skTemp19 = float4(_86_e[0], _84_a[0], _86_e.yw);
+        } else {
+          _skTemp19 = float4(_84_a[0], _86_e[0], _86_e.yz);
+        }
+        float4 const _87_f = _skTemp19;
+        float const _88_h = _87_f[0];
+        float const _skTemp20 = fmin(_87_f[1], _87_f[2]);
+        float const _89_i = (_88_h - _skTemp20);
+        float const _90_j = (_88_h - (_89_i * 0.5f));
+        float const _skTemp21 = fabs((_87_f[3] + ((_87_f[1] - _87_f[2]) / ((_89_i * 6.0f) + 0.00009999999747378752f))));
+        float const _91_k = _skTemp21;
+        float const _skTemp22 = fabs(((_90_j * 2.0f) - _84_a[3]));
+        float const _92_l = (_89_i / ((_84_a[3] + 0.00009999999747378752f) - _skTemp22));
+        float const _93_m = (_90_j / (_84_a[3] + 0.00009999999747378752f));
+        _84_a = float4(_91_k, _92_l, _93_m, _84_a[3]);
+      }
+    } else {
+      {
+        float const _skTemp23 = fmax(_84_a[3], 0.00009999999747378752f);
+        _84_a = float4((_84_a.xyz / _skTemp23), _84_a[3]);
+      }
+    }
+    float4 _94_f = float4((((*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].matrix_4 * float4(_84_a)) + (*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].translate_4));
+    if (bool(_85_d)) {
+      {
+        float const _skTemp24 = fabs(((2.0f * _94_f[2]) - 1.0f));
+        float const _95_b = ((1.0f - _skTemp24) * _94_f[1]);
+        float3 const _96_c = (_94_f.xxx + float3(0.0f, 0.6666666865348815918f, 0.3333333432674407959f));
+        float3 const _skTemp25 = fract(_96_c);
+        float3 const _skTemp26 = fabs(((_skTemp25 * 6.0f) - 3.0f));
+        float3 const _skTemp27 = saturate((_skTemp26 - 1.0f));
+        float3 const _97_d = _skTemp27;
+        float4 const _skTemp28 = saturate(float4(((((_97_d - 0.5f) * _95_b) + _94_f[2]) * _94_f[3]), _94_f[3]));
+        _94_f = _skTemp28;
+      }
+    } else {
+      {
+        if (bool((*(tint_symbol_7)).fsUniformData[(*(tint_private_vars)).shadingSsboIndex].clampRGB_4)) {
+          float4 const _skTemp29 = saturate(_94_f);
+          _94_f = _skTemp29;
+        } else {
+          float const _skTemp30 = saturate(_94_f[3]);
+          _94_f[3] = _skTemp30;
+        }
+        _94_f = float4((_94_f.xyz * _94_f[3]), _94_f[3]);
+      }
+    }
+    float4 const outColor_0 = _94_f;
+    (*(_stageOut)).sk_FragColor = outColor_0;
+  }
+}
+
+struct tint_symbol_4 {
+  uint2 ssboIndicesVar [[user(locn0)]] [[flat]];
+  float2 localCoordsVar [[user(locn1)]];
+};
+
+struct tint_symbol_5 {
+  float4 sk_FragColor [[color(0)]];
+};
+
+FSOut tint_symbol_inner(FSIn _stageIn, thread tint_private_vars_struct* const tint_private_vars, const device FSUniforms* const tint_symbol_12, texture2d<float, access::sample> tint_symbol_13, sampler tint_symbol_14, texture2d<float, access::sample> tint_symbol_15, sampler tint_symbol_16) {
+  FSOut _stageOut = {};
+  _skslMain(_stageIn, &(_stageOut), tint_private_vars, tint_symbol_12, tint_symbol_13, tint_symbol_14, tint_symbol_15, tint_symbol_16);
+  return _stageOut;
+}
+
+fragment tint_symbol_5 tint_symbol(const device FSUniforms* tint_symbol_17 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_18 [[texture(0)]], sampler tint_symbol_19 [[sampler(0)]], texture2d<float, access::sample> tint_symbol_20 [[texture(1)]], sampler tint_symbol_21 [[sampler(1)]], tint_symbol_4 tint_symbol_3 [[stage_in]]) {
+  thread tint_private_vars_struct tint_private_vars = {};
+  FSIn const tint_symbol_6 = {.ssboIndicesVar=tint_symbol_3.ssboIndicesVar, .localCoordsVar=tint_symbol_3.localCoordsVar};
+  FSOut const inner_result = tint_symbol_inner(tint_symbol_6, &(tint_private_vars), tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20, tint_symbol_21);
+  tint_symbol_5 wrapper_result = {};
+  wrapper_result.sk_FragColor = inner_result.sk_FragColor;
+  return wrapper_result;
+}
+
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.spvasm b/test/tint/bug/tint/379127084.wgsl.expected.spvasm
new file mode 100644
index 0000000..8b5262f
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.spvasm
@@ -0,0 +1,780 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 1
+; Bound: 525
+; Schema: 0
+               OpCapability Shader
+         %92 = OpExtInstImport "GLSL.std.450"
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %main_loc0_Input %main_loc1_Input %main_loc0_Output
+               OpExecutionMode %main OriginUpperLeft
+               OpMemberName %IntrinsicUniforms 0 "viewport"
+               OpMemberName %IntrinsicUniforms 1 "dstCopyBounds"
+               OpName %IntrinsicUniforms "IntrinsicUniforms"
+               OpMemberName %_uniform0_block 0 "inner"
+               OpName %_uniform0_block "_uniform0_block"
+               OpMemberName %FSUniformData 0 "baseFrequency_1"
+               OpMemberName %FSUniformData 1 "stitchData_1"
+               OpMemberName %FSUniformData 2 "noiseType_1"
+               OpMemberName %FSUniformData 3 "numOctaves_1"
+               OpMemberName %FSUniformData 4 "stitching_1"
+               OpMemberName %FSUniformData 5 "matrix_4"
+               OpMemberName %FSUniformData 6 "translate_4"
+               OpMemberName %FSUniformData 7 "inHSL_4"
+               OpMemberName %FSUniformData 8 "clampRGB_4"
+               OpName %FSUniformData "FSUniformData"
+               OpMemberName %FSUniforms 0 "fsUniformData"
+               OpName %FSUniforms "FSUniforms"
+               OpName %_storage1 "_storage1"
+               OpName %shadingSsboIndex "shadingSsboIndex"
+               OpName %permutationsSampler_1_Sampler "permutationsSampler_1_Sampler"
+               OpName %permutationsSampler_1_Texture "permutationsSampler_1_Texture"
+               OpName %noiseSampler_1_Sampler "noiseSampler_1_Sampler"
+               OpName %noiseSampler_1_Texture "noiseSampler_1_Texture"
+               OpName %main_loc0_Input "main_loc0_Input"
+               OpName %main_loc1_Input "main_loc1_Input"
+               OpName %main_loc0_Output "main_loc0_Output"
+               OpName %_skslMain "_skslMain"
+               OpMemberName %FSIn 0 "ssboIndicesVar"
+               OpMemberName %FSIn 1 "localCoordsVar"
+               OpName %FSIn "FSIn"
+               OpName %_stageIn "_stageIn"
+               OpMemberName %FSOut 0 "sk_FragColor"
+               OpName %FSOut "FSOut"
+               OpName %_stageOut_root "_stageOut_root"
+               OpName %_56_d "_56_d"
+               OpName %_57_k "_57_k"
+               OpName %_58_l "_58_l"
+               OpName %_59_m "_59_m"
+               OpName %_60_n "_60_n"
+               OpName %_61_o "_61_o"
+               OpName %_62_f "_62_f"
+               OpName %_skTemp2 "_skTemp2"
+               OpName %_skTemp3 "_skTemp3"
+               OpName %_63_g "_63_g"
+               OpName %_64_h "_64_h"
+               OpName %_65_i "_65_i"
+               OpName %_skTemp4 "_skTemp4"
+               OpName %_66_j "_66_j"
+               OpName %_67_p "_67_p"
+               OpName %_skTemp5 "_skTemp5"
+               OpName %_skTemp5 "_68_d"
+               OpName %_skTemp6 "_skTemp6"
+               OpName %_skTemp6 "_69_e"
+               OpName %_71_g "_71_g"
+               OpName %_72_h "_72_h"
+               OpName %_73_i "_73_i"
+               OpName %_74_j "_74_j"
+               OpName %_75_k "_75_k"
+               OpName %_76_l "_76_l"
+               OpName %_77_m "_77_m"
+               OpName %_78_n "_78_n"
+               OpName %_skTemp7 "_skTemp7"
+               OpName %_79_o "_79_o"
+               OpName %_skTemp8 "_skTemp8"
+               OpName %_80_p "_80_p"
+               OpName %_skTemp9 "_skTemp9"
+               OpName %_skTemp9 "_81_q"
+               OpName %_skTemp10 "_skTemp10"
+               OpName %_skTemp11 "_skTemp11"
+               OpName %_skTemp12 "_skTemp12"
+               OpName %_skTemp12 "_82_r"
+               OpName %_skTemp13 "_skTemp13"
+               OpName %_83_q "_83_q"
+               OpName %_skTemp14 "_skTemp14"
+               OpName %_skTemp15 "_skTemp15"
+               OpName %_skTemp16 "_skTemp16"
+               OpName %_skTemp17 "_skTemp17"
+               OpName %_84_a "_84_a"
+               OpName %_85_d "_85_d"
+               OpName %_skTemp18 "_skTemp18"
+               OpName %_86_e "_86_e"
+               OpName %_skTemp19 "_skTemp19"
+               OpName %_87_f "_87_f"
+               OpName %_88_h "_88_h"
+               OpName %_skTemp20 "_skTemp20"
+               OpName %_89_i "_89_i"
+               OpName %_90_j "_90_j"
+               OpName %_skTemp21 "_skTemp21"
+               OpName %_skTemp21 "_91_k"
+               OpName %_skTemp22 "_skTemp22"
+               OpName %_92_l "_92_l"
+               OpName %_93_m "_93_m"
+               OpName %_skTemp23 "_skTemp23"
+               OpName %_94_f "_94_f"
+               OpName %_skTemp24 "_skTemp24"
+               OpName %_95_b "_95_b"
+               OpName %_96_c "_96_c"
+               OpName %_skTemp25 "_skTemp25"
+               OpName %_skTemp26 "_skTemp26"
+               OpName %_skTemp27 "_skTemp27"
+               OpName %_skTemp27 "_97_d"
+               OpName %_skTemp28 "_skTemp28"
+               OpName %_skTemp29 "_skTemp29"
+               OpName %_skTemp30 "_skTemp30"
+               OpName %outColor_0 "outColor_0"
+               OpName %main_inner "main_inner"
+               OpName %_stageIn_0 "_stageIn"
+               OpName %_stageOut "_stageOut"
+               OpName %main "main"
+               OpMemberDecorate %IntrinsicUniforms 0 Offset 0
+               OpMemberDecorate %IntrinsicUniforms 1 Offset 16
+               OpMemberDecorate %_uniform0_block 0 Offset 0
+               OpDecorate %_uniform0_block Block
+               OpDecorate %1 DescriptorSet 0
+               OpDecorate %1 Binding 0
+               OpDecorate %1 NonWritable
+               OpMemberDecorate %FSUniformData 0 Offset 0
+               OpMemberDecorate %FSUniformData 1 Offset 8
+               OpMemberDecorate %FSUniformData 2 Offset 16
+               OpMemberDecorate %FSUniformData 3 Offset 20
+               OpMemberDecorate %FSUniformData 4 Offset 24
+               OpMemberDecorate %FSUniformData 5 Offset 32
+               OpMemberDecorate %FSUniformData 5 ColMajor
+               OpMemberDecorate %FSUniformData 5 MatrixStride 16
+               OpMemberDecorate %FSUniformData 6 Offset 96
+               OpMemberDecorate %FSUniformData 7 Offset 112
+               OpMemberDecorate %FSUniformData 8 Offset 116
+               OpDecorate %_runtimearr_FSUniformData ArrayStride 128
+               OpMemberDecorate %FSUniforms 0 Offset 0
+               OpDecorate %FSUniforms Block
+               OpDecorate %_storage1 DescriptorSet 0
+               OpDecorate %_storage1 Binding 2
+               OpDecorate %_storage1 NonWritable
+               OpDecorate %permutationsSampler_1_Sampler DescriptorSet 1
+               OpDecorate %permutationsSampler_1_Sampler Binding 0
+               OpDecorate %permutationsSampler_1_Texture DescriptorSet 1
+               OpDecorate %permutationsSampler_1_Texture Binding 1
+               OpDecorate %noiseSampler_1_Sampler DescriptorSet 1
+               OpDecorate %noiseSampler_1_Sampler Binding 2
+               OpDecorate %noiseSampler_1_Texture DescriptorSet 1
+               OpDecorate %noiseSampler_1_Texture Binding 3
+               OpDecorate %main_loc0_Input Location 0
+               OpDecorate %main_loc0_Input Flat
+               OpDecorate %main_loc1_Input Location 1
+               OpDecorate %main_loc0_Output Location 0
+               OpMemberDecorate %FSIn 0 Offset 0
+               OpMemberDecorate %FSIn 1 Offset 8
+               OpMemberDecorate %FSOut 0 Offset 0
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%IntrinsicUniforms = OpTypeStruct %v4float %v4float
+%_uniform0_block = OpTypeStruct %IntrinsicUniforms
+%_ptr_Uniform__uniform0_block = OpTypePointer Uniform %_uniform0_block
+          %1 = OpVariable %_ptr_Uniform__uniform0_block Uniform
+    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+%mat4v4float = OpTypeMatrix %v4float 4
+%FSUniformData = OpTypeStruct %v2float %v2float %int %int %int %mat4v4float %v4float %int %int
+%_runtimearr_FSUniformData = OpTypeRuntimeArray %FSUniformData
+ %FSUniforms = OpTypeStruct %_runtimearr_FSUniformData
+%_ptr_StorageBuffer_FSUniforms = OpTypePointer StorageBuffer %FSUniforms
+  %_storage1 = OpVariable %_ptr_StorageBuffer_FSUniforms StorageBuffer
+       %uint = OpTypeInt 32 0
+%_ptr_Private_uint = OpTypePointer Private %uint
+         %18 = OpConstantNull %uint
+%shadingSsboIndex = OpVariable %_ptr_Private_uint Private %18
+         %21 = OpTypeSampler
+%_ptr_UniformConstant_21 = OpTypePointer UniformConstant %21
+%permutationsSampler_1_Sampler = OpVariable %_ptr_UniformConstant_21 UniformConstant
+         %24 = OpTypeImage %float 2D 0 0 0 1 Unknown
+%_ptr_UniformConstant_24 = OpTypePointer UniformConstant %24
+%permutationsSampler_1_Texture = OpVariable %_ptr_UniformConstant_24 UniformConstant
+%noiseSampler_1_Sampler = OpVariable %_ptr_UniformConstant_21 UniformConstant
+%noiseSampler_1_Texture = OpVariable %_ptr_UniformConstant_24 UniformConstant
+     %v2uint = OpTypeVector %uint 2
+%_ptr_Input_v2uint = OpTypePointer Input %v2uint
+%main_loc0_Input = OpVariable %_ptr_Input_v2uint Input
+%_ptr_Input_v2float = OpTypePointer Input %v2float
+%main_loc1_Input = OpVariable %_ptr_Input_v2float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+%main_loc0_Output = OpVariable %_ptr_Output_v4float Output
+       %void = OpTypeVoid
+       %FSIn = OpTypeStruct %v2uint %v2float
+      %FSOut = OpTypeStruct %v4float
+%_ptr_Function_FSOut = OpTypePointer Function %FSOut
+         %41 = OpTypeFunction %void %FSIn %_ptr_Function_FSOut
+%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
+     %uint_0 = OpConstant %uint 0
+     %uint_2 = OpConstant %uint 2
+  %float_0_5 = OpConstant %float 0.5
+%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %63 = OpConstantNull %v4float
+     %uint_1 = OpConstant %uint 1
+%_ptr_Function_float = OpTypePointer Function %float
+    %float_1 = OpConstant %float 1
+%_ptr_Function_int = OpTypePointer Function %int
+      %int_0 = OpConstant %int 0
+     %uint_3 = OpConstant %uint 3
+       %bool = OpTypeBool
+        %101 = OpConstantComposite %v2float %float_1 %float_1
+     %uint_4 = OpConstant %uint 4
+        %108 = OpConstantNull %int
+%float_0_00390625 = OpConstant %float 0.00390625
+%float_n0_474999994 = OpConstant %float -0.474999994
+  %float_n16 = OpConstant %float -16
+%float_15_9899998 = OpConstant %float 15.9899998
+        %133 = OpTypeSampledImage %24
+      %false = OpConstantFalse %bool
+  %float_255 = OpConstant %float 255
+        %154 = OpConstantComposite %v2float %float_255 %float_255
+        %157 = OpConstantComposite %v2float %float_0_5 %float_0_5
+%float_0_00392156886 = OpConstant %float 0.00392156886
+        %160 = OpConstantComposite %v2float %float_0_00392156886 %float_0_00392156886
+  %float_256 = OpConstant %float 256
+        %172 = OpConstantComposite %v4float %float_0_00390625 %float_0_00390625 %float_0_00390625 %float_0_00390625
+        %177 = OpConstantNull %v2float
+ %float_0_25 = OpConstant %float 0.25
+    %float_2 = OpConstant %float 2
+      %int_1 = OpConstant %int 1
+      %int_4 = OpConstant %int 4
+        %301 = OpConstantComposite %v2float %float_2 %float_2
+        %313 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
+        %317 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+    %v3float = OpTypeVector %float 3
+%float_0_212599993 = OpConstant %float 0.212599993
+%float_0_715200007 = OpConstant %float 0.715200007
+%float_0_0722000003 = OpConstant %float 0.0722000003
+        %329 = OpConstantComposite %v3float %float_0_212599993 %float_0_715200007 %float_0_0722000003
+    %float_0 = OpConstant %float 0
+     %uint_7 = OpConstant %uint 7
+   %float_n1 = OpConstant %float -1
+%float_0_666666687 = OpConstant %float 0.666666687
+%float_n0_333333343 = OpConstant %float -0.333333343
+    %float_6 = OpConstant %float 6
+%float_9_99999975en05 = OpConstant %float 9.99999975e-05
+%_ptr_StorageBuffer_mat4v4float = OpTypePointer StorageBuffer %mat4v4float
+     %uint_5 = OpConstant %uint 5
+%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
+     %uint_6 = OpConstant %uint 6
+%float_0_333333343 = OpConstant %float 0.333333343
+        %458 = OpConstantComposite %v3float %float_0 %float_0_666666687 %float_0_333333343
+    %float_3 = OpConstant %float 3
+        %469 = OpConstantNull %v3float
+        %470 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+     %uint_8 = OpConstant %uint 8
+        %511 = OpTypeFunction %FSOut %FSIn
+        %514 = OpConstantNull %FSOut
+        %518 = OpTypeFunction %void
+  %_skslMain = OpFunction %void None %41
+   %_stageIn = OpFunctionParameter %FSIn
+%_stageOut_root = OpFunctionParameter %_ptr_Function_FSOut
+         %42 = OpLabel
+      %_57_k = OpVariable %_ptr_Function_v2float Function
+      %_58_l = OpVariable %_ptr_Function_v4float Function
+      %_59_m = OpVariable %_ptr_Function_v2float Function
+      %_60_n = OpVariable %_ptr_Function_float Function
+      %_61_o = OpVariable %_ptr_Function_int Function
+      %_62_f = OpVariable %_ptr_Function_v4float Function %63
+      %_65_i = OpVariable %_ptr_Function_v2float Function
+      %_66_j = OpVariable %_ptr_Function_v4float Function
+      %_71_g = OpVariable %_ptr_Function_v4float Function %63
+      %_72_h = OpVariable %_ptr_Function_int Function
+      %_78_n = OpVariable %_ptr_Function_v2float Function
+      %_79_o = OpVariable %_ptr_Function_float Function
+      %_80_p = OpVariable %_ptr_Function_float Function
+      %_83_q = OpVariable %_ptr_Function_v4float Function
+      %_84_a = OpVariable %_ptr_Function_v4float Function
+  %_skTemp18 = OpVariable %_ptr_Function_v4float Function %63
+  %_skTemp19 = OpVariable %_ptr_Function_v4float Function %63
+      %_94_f = OpVariable %_ptr_Function_v4float Function
+         %43 = OpCompositeExtract %uint %_stageIn 0 1
+               OpStore %shadingSsboIndex %43 None
+         %44 = OpLoad %uint %shadingSsboIndex None
+         %45 = OpAccessChain %_ptr_StorageBuffer_int %_storage1 %uint_0 %44 %uint_2
+      %_56_d = OpLoad %int %45 None
+         %50 = OpCompositeExtract %v2float %_stageIn 1
+         %51 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
+         %53 = OpFAdd %v2float %50 %51
+         %54 = OpLoad %uint %shadingSsboIndex None
+         %55 = OpAccessChain %_ptr_StorageBuffer_v2float %_storage1 %uint_0 %54 %uint_0
+         %57 = OpLoad %v2float %55 None
+         %58 = OpFMul %v2float %53 %57
+               OpStore %_57_k %58
+               OpStore %_58_l %63
+         %64 = OpLoad %uint %shadingSsboIndex None
+         %65 = OpAccessChain %_ptr_StorageBuffer_v2float %_storage1 %uint_0 %64 %uint_1
+         %67 = OpLoad %v2float %65 None
+               OpStore %_59_m %67
+               OpStore %_60_n %float_1
+               OpStore %_61_o %int_0
+               OpBranch %77
+         %77 = OpLabel
+               OpLoopMerge %78 %76 None
+               OpBranch %75
+         %75 = OpLabel
+         %79 = OpLoad %int %_61_o None
+         %80 = OpLoad %uint %shadingSsboIndex None
+         %81 = OpAccessChain %_ptr_StorageBuffer_int %_storage1 %uint_0 %80 %uint_3
+         %83 = OpLoad %int %81 None
+         %84 = OpSLessThan %bool %79 %83
+               OpSelectionMerge %86 None
+               OpBranchConditional %84 %87 %88
+         %87 = OpLabel
+         %90 = OpLoad %v2float %_57_k None
+   %_skTemp2 = OpExtInst %v2float %92 Floor %90
+         %93 = OpLoad %v4float %_62_f None
+         %94 = OpVectorShuffle %v2float %93 %93 2 3
+         %95 = OpCompositeConstruct %v4float %_skTemp2 %94
+               OpStore %_62_f %95 None
+         %96 = OpLoad %v4float %_62_f None
+         %97 = OpVectorShuffle %v2float %96 %96 0 1
+         %98 = OpLoad %v4float %_62_f None
+         %99 = OpVectorShuffle %v2float %98 %98 0 1
+        %100 = OpFAdd %v2float %99 %101
+        %102 = OpCompositeConstruct %v4float %97 %100
+               OpStore %_62_f %102 None
+        %103 = OpLoad %uint %shadingSsboIndex None
+        %104 = OpAccessChain %_ptr_StorageBuffer_int %_storage1 %uint_0 %103 %uint_4
+        %106 = OpLoad %int %104 None
+        %107 = OpINotEqual %bool %106 %108
+               OpSelectionMerge %109 None
+               OpBranchConditional %107 %110 %109
+        %110 = OpLabel
+        %111 = OpLoad %v2float %_59_m None
+        %112 = OpVectorShuffle %v4float %111 %111 0 1 0 1
+        %113 = OpLoad %v4float %_62_f None
+   %_skTemp3 = OpExtInst %v4float %92 Step %112 %113
+        %115 = OpLoad %v4float %_62_f None
+        %116 = OpLoad %v2float %_59_m None
+        %117 = OpVectorShuffle %v4float %116 %116 0 1 0 1
+        %118 = OpFMul %v4float %_skTemp3 %117
+        %119 = OpFSub %v4float %115 %118
+               OpStore %_62_f %119 None
+               OpBranch %109
+        %109 = OpLabel
+        %120 = OpLoad %24 %permutationsSampler_1_Texture None
+        %121 = OpLoad %21 %permutationsSampler_1_Sampler None
+        %122 = OpAccessChain %_ptr_Function_float %_62_f %uint_0
+        %123 = OpLoad %float %122 None
+        %124 = OpFAdd %float %123 %float_0_5
+        %125 = OpFMul %float %124 %float_0_00390625
+        %127 = OpCompositeConstruct %v2float %125 %float_0_5
+        %128 = OpExtInst %float %92 NClamp %float_n0_474999994 %float_n16 %float_15_9899998
+        %132 = OpSampledImage %133 %120 %121
+        %134 = OpImageSampleImplicitLod %v4float %132 %127 Bias %128
+      %_63_g = OpCompositeExtract %float %134 0
+        %136 = OpLoad %24 %permutationsSampler_1_Texture None
+        %137 = OpLoad %21 %permutationsSampler_1_Sampler None
+        %138 = OpAccessChain %_ptr_Function_float %_62_f %uint_2
+        %139 = OpLoad %float %138 None
+        %140 = OpFAdd %float %139 %float_0_5
+        %141 = OpFMul %float %140 %float_0_00390625
+        %142 = OpCompositeConstruct %v2float %141 %float_0_5
+        %143 = OpExtInst %float %92 NClamp %float_n0_474999994 %float_n16 %float_15_9899998
+        %144 = OpSampledImage %133 %136 %137
+        %145 = OpImageSampleImplicitLod %v4float %144 %142 Bias %143
+      %_64_h = OpCompositeExtract %float %145 0
+        %147 = OpCompositeConstruct %v2float %_63_g %_64_h
+               OpStore %_65_i %147
+               OpSelectionMerge %149 None
+               OpBranchConditional %false %150 %149
+        %150 = OpLabel
+        %152 = OpLoad %v2float %_65_i None
+        %153 = OpFMul %v2float %152 %154
+        %156 = OpFAdd %v2float %153 %157
+   %_skTemp4 = OpExtInst %v2float %92 Floor %156
+        %159 = OpFMul %v2float %_skTemp4 %160
+               OpStore %_65_i %159 None
+               OpBranch %149
+        %149 = OpLabel
+        %162 = OpLoad %v2float %_65_i None
+        %163 = OpVectorShuffle %v4float %162 %162 0 1 0 1
+        %164 = OpVectorTimesScalar %v4float %163 %float_256
+        %166 = OpLoad %v4float %_62_f None
+        %167 = OpVectorShuffle %v4float %166 %166 1 1 3 3
+        %168 = OpFAdd %v4float %164 %167
+               OpStore %_66_j %168
+        %170 = OpLoad %v4float %_66_j None
+        %171 = OpFMul %v4float %170 %172
+               OpStore %_66_j %171 None
+      %_67_p = OpLoad %v4float %_66_j None
+        %174 = OpLoad %v2float %_57_k None
+   %_skTemp5 = OpExtInst %v2float %92 Fract %174
+   %_skTemp6 = OpExtInst %v2float %92 SmoothStep %177 %101 %_skTemp5
+               OpStore %_72_h %int_0
+               OpBranch %182
+        %182 = OpLabel
+               OpLoopMerge %183 %181 None
+               OpBranch %180
+        %180 = OpLabel
+        %184 = OpLoad %int %_72_h None
+        %185 = OpConvertSToF %float %184
+        %186 = OpFAdd %float %185 %float_0_5
+      %_73_i = OpFMul %float %186 %float_0_25
+        %189 = OpLoad %24 %noiseSampler_1_Texture None
+        %190 = OpLoad %21 %noiseSampler_1_Sampler None
+        %191 = OpCompositeExtract %float %_67_p 0
+        %192 = OpCompositeConstruct %v2float %191 %_73_i
+        %193 = OpExtInst %float %92 NClamp %float_n0_474999994 %float_n16 %float_15_9899998
+        %194 = OpSampledImage %133 %189 %190
+      %_74_j = OpImageSampleImplicitLod %v4float %194 %192 Bias %193
+        %196 = OpLoad %24 %noiseSampler_1_Texture None
+        %197 = OpLoad %21 %noiseSampler_1_Sampler None
+        %198 = OpCompositeExtract %float %_67_p 1
+        %199 = OpCompositeConstruct %v2float %198 %_73_i
+        %200 = OpExtInst %float %92 NClamp %float_n0_474999994 %float_n16 %float_15_9899998
+        %201 = OpSampledImage %133 %196 %197
+      %_75_k = OpImageSampleImplicitLod %v4float %201 %199 Bias %200
+        %203 = OpLoad %24 %noiseSampler_1_Texture None
+        %204 = OpLoad %21 %noiseSampler_1_Sampler None
+        %205 = OpCompositeExtract %float %_67_p 3
+        %206 = OpCompositeConstruct %v2float %205 %_73_i
+        %207 = OpExtInst %float %92 NClamp %float_n0_474999994 %float_n16 %float_15_9899998
+        %208 = OpSampledImage %133 %203 %204
+      %_76_l = OpImageSampleImplicitLod %v4float %208 %206 Bias %207
+        %210 = OpLoad %24 %noiseSampler_1_Texture None
+        %211 = OpLoad %21 %noiseSampler_1_Sampler None
+        %212 = OpCompositeExtract %float %_67_p 2
+        %213 = OpCompositeConstruct %v2float %212 %_73_i
+        %214 = OpExtInst %float %92 NClamp %float_n0_474999994 %float_n16 %float_15_9899998
+        %215 = OpSampledImage %133 %210 %211
+      %_77_m = OpImageSampleImplicitLod %v4float %215 %213 Bias %214
+               OpStore %_78_n %_skTemp5
+        %218 = OpVectorShuffle %v2float %_74_j %_74_j 1 3
+        %219 = OpVectorShuffle %v2float %_74_j %_74_j 0 2
+        %220 = OpVectorTimesScalar %v2float %219 %float_0_00390625
+        %221 = OpFAdd %v2float %218 %220
+        %222 = OpVectorTimesScalar %v2float %221 %float_2
+        %224 = OpCompositeConstruct %v2float %float_1 %float_1
+        %225 = OpFSub %v2float %222 %224
+        %226 = OpLoad %v2float %_78_n None
+   %_skTemp7 = OpDot %float %225 %226
+               OpStore %_79_o %_skTemp7
+        %229 = OpAccessChain %_ptr_Function_float %_78_n %uint_0
+        %230 = OpLoad %float %229 None
+        %231 = OpFSub %float %230 %float_1
+        %232 = OpAccessChain %_ptr_Function_float %_78_n %uint_0
+               OpStore %232 %231 None
+        %233 = OpVectorShuffle %v2float %_75_k %_75_k 1 3
+        %234 = OpVectorShuffle %v2float %_75_k %_75_k 0 2
+        %235 = OpVectorTimesScalar %v2float %234 %float_0_00390625
+        %236 = OpFAdd %v2float %233 %235
+        %237 = OpVectorTimesScalar %v2float %236 %float_2
+        %238 = OpCompositeConstruct %v2float %float_1 %float_1
+        %239 = OpFSub %v2float %237 %238
+        %240 = OpLoad %v2float %_78_n None
+   %_skTemp8 = OpDot %float %239 %240
+               OpStore %_80_p %_skTemp8
+        %243 = OpLoad %float %_79_o None
+        %244 = OpLoad %float %_80_p None
+        %245 = OpCompositeExtract %float %_skTemp6 0
+   %_skTemp9 = OpExtInst %float %92 FMix %243 %244 %245
+        %247 = OpAccessChain %_ptr_Function_float %_78_n %uint_1
+        %248 = OpLoad %float %247 None
+        %249 = OpFSub %float %248 %float_1
+        %250 = OpAccessChain %_ptr_Function_float %_78_n %uint_1
+               OpStore %250 %249 None
+        %251 = OpVectorShuffle %v2float %_76_l %_76_l 1 3
+        %252 = OpVectorShuffle %v2float %_76_l %_76_l 0 2
+        %253 = OpVectorTimesScalar %v2float %252 %float_0_00390625
+        %254 = OpFAdd %v2float %251 %253
+        %255 = OpVectorTimesScalar %v2float %254 %float_2
+        %256 = OpCompositeConstruct %v2float %float_1 %float_1
+        %257 = OpFSub %v2float %255 %256
+        %258 = OpLoad %v2float %_78_n None
+  %_skTemp10 = OpDot %float %257 %258
+               OpStore %_80_p %_skTemp10 None
+        %260 = OpAccessChain %_ptr_Function_float %_78_n %uint_0
+        %261 = OpLoad %float %260 None
+        %262 = OpFAdd %float %261 %float_1
+        %263 = OpAccessChain %_ptr_Function_float %_78_n %uint_0
+               OpStore %263 %262 None
+        %264 = OpVectorShuffle %v2float %_77_m %_77_m 1 3
+        %265 = OpVectorShuffle %v2float %_77_m %_77_m 0 2
+        %266 = OpVectorTimesScalar %v2float %265 %float_0_00390625
+        %267 = OpFAdd %v2float %264 %266
+        %268 = OpVectorTimesScalar %v2float %267 %float_2
+        %269 = OpCompositeConstruct %v2float %float_1 %float_1
+        %270 = OpFSub %v2float %268 %269
+        %271 = OpLoad %v2float %_78_n None
+  %_skTemp11 = OpDot %float %270 %271
+               OpStore %_79_o %_skTemp11 None
+        %273 = OpLoad %float %_79_o None
+        %274 = OpLoad %float %_80_p None
+        %275 = OpCompositeExtract %float %_skTemp6 0
+  %_skTemp12 = OpExtInst %float %92 FMix %273 %274 %275
+        %277 = OpCompositeExtract %float %_skTemp6 1
+  %_skTemp13 = OpExtInst %float %92 FMix %_skTemp9 %_skTemp12 %277
+        %279 = OpLoad %int %_72_h None
+        %280 = OpAccessChain %_ptr_Function_float %_71_g %279
+               OpStore %280 %_skTemp13 None
+               OpBranch %181
+        %181 = OpLabel
+        %281 = OpLoad %int %_72_h None
+        %282 = OpIAdd %int %281 %int_1
+               OpStore %_72_h %282 None
+        %284 = OpLoad %int %_72_h None
+        %285 = OpSGreaterThanEqual %bool %284 %int_4
+               OpBranchConditional %285 %183 %182
+        %183 = OpLabel
+        %287 = OpLoad %v4float %_71_g None
+               OpStore %_83_q %287
+        %289 = OpINotEqual %bool %_56_d %int_0
+               OpSelectionMerge %290 None
+               OpBranchConditional %289 %291 %290
+        %291 = OpLabel
+        %292 = OpLoad %v4float %_83_q None
+  %_skTemp14 = OpExtInst %v4float %92 FAbs %292
+               OpStore %_83_q %_skTemp14 None
+               OpBranch %290
+        %290 = OpLabel
+        %294 = OpLoad %v4float %_58_l None
+        %295 = OpLoad %v4float %_83_q None
+        %296 = OpLoad %float %_60_n None
+        %297 = OpVectorTimesScalar %v4float %295 %296
+        %298 = OpFAdd %v4float %294 %297
+               OpStore %_58_l %298 None
+        %299 = OpLoad %v2float %_57_k None
+        %300 = OpFMul %v2float %299 %301
+               OpStore %_57_k %300 None
+        %302 = OpLoad %float %_60_n None
+        %303 = OpFMul %float %302 %float_0_5
+               OpStore %_60_n %303 None
+        %304 = OpLoad %v2float %_59_m None
+        %305 = OpFMul %v2float %304 %301
+               OpStore %_59_m %305 None
+               OpBranch %86
+         %88 = OpLabel
+               OpBranch %78
+         %86 = OpLabel
+               OpBranch %76
+         %76 = OpLabel
+        %306 = OpLoad %int %_61_o None
+        %307 = OpIAdd %int %306 %int_1
+               OpStore %_61_o %307 None
+               OpBranch %77
+         %78 = OpLabel
+        %308 = OpIEqual %bool %_56_d %int_0
+               OpSelectionMerge %309 None
+               OpBranchConditional %308 %310 %309
+        %310 = OpLabel
+        %311 = OpLoad %v4float %_58_l None
+        %312 = OpFMul %v4float %311 %313
+        %314 = OpFAdd %v4float %312 %313
+               OpStore %_58_l %314 None
+               OpBranch %309
+        %309 = OpLabel
+        %315 = OpLoad %v4float %_58_l None
+  %_skTemp15 = OpExtInst %v4float %92 NClamp %315 %63 %317
+               OpStore %_58_l %_skTemp15 None
+        %318 = OpLoad %v4float %_58_l None
+        %319 = OpVectorShuffle %v3float %318 %318 0 1 2
+        %321 = OpAccessChain %_ptr_Function_float %_58_l %uint_3
+        %322 = OpLoad %float %321 None
+        %323 = OpVectorTimesScalar %v3float %319 %322
+        %324 = OpAccessChain %_ptr_Function_float %_58_l %uint_3
+        %325 = OpLoad %float %324 None
+        %326 = OpCompositeConstruct %v4float %323 %325
+        %327 = OpVectorShuffle %v3float %326 %326 0 1 2
+  %_skTemp16 = OpDot %float %329 %327
+  %_skTemp17 = OpExtInst %float %92 NClamp %_skTemp16 %float_0 %float_1
+        %335 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %_skTemp17
+               OpStore %_84_a %335
+        %337 = OpLoad %uint %shadingSsboIndex None
+        %338 = OpAccessChain %_ptr_StorageBuffer_int %_storage1 %uint_0 %337 %uint_7
+      %_85_d = OpLoad %int %338 None
+        %341 = OpINotEqual %bool %_85_d %108
+               OpSelectionMerge %342 None
+               OpBranchConditional %341 %343 %344
+        %343 = OpLabel
+        %346 = OpAccessChain %_ptr_Function_float %_84_a %uint_1
+        %347 = OpLoad %float %346 None
+        %348 = OpAccessChain %_ptr_Function_float %_84_a %uint_2
+        %349 = OpLoad %float %348 None
+        %350 = OpFOrdLessThan %bool %347 %349
+               OpSelectionMerge %351 None
+               OpBranchConditional %350 %352 %353
+        %352 = OpLabel
+        %354 = OpLoad %v4float %_84_a None
+        %355 = OpVectorShuffle %v2float %354 %354 2 1
+        %356 = OpCompositeConstruct %v4float %355 %float_n1 %float_0_666666687
+               OpStore %_skTemp18 %356 None
+               OpBranch %351
+        %353 = OpLabel
+        %359 = OpLoad %v4float %_84_a None
+        %360 = OpVectorShuffle %v2float %359 %359 1 2
+        %361 = OpCompositeConstruct %v4float %360 %float_0 %float_n0_333333343
+               OpStore %_skTemp18 %361 None
+               OpBranch %351
+        %351 = OpLabel
+      %_86_e = OpLoad %v4float %_skTemp18 None
+        %365 = OpAccessChain %_ptr_Function_float %_84_a %uint_0
+        %366 = OpLoad %float %365 None
+        %367 = OpCompositeExtract %float %_86_e 0
+        %368 = OpFOrdLessThan %bool %366 %367
+               OpSelectionMerge %369 None
+               OpBranchConditional %368 %370 %371
+        %370 = OpLabel
+        %372 = OpCompositeExtract %float %_86_e 0
+        %373 = OpAccessChain %_ptr_Function_float %_84_a %uint_0
+        %374 = OpLoad %float %373 None
+        %375 = OpVectorShuffle %v2float %_86_e %_86_e 1 3
+        %376 = OpCompositeConstruct %v4float %372 %374 %375
+               OpStore %_skTemp19 %376 None
+               OpBranch %369
+        %371 = OpLabel
+        %377 = OpAccessChain %_ptr_Function_float %_84_a %uint_0
+        %378 = OpLoad %float %377 None
+        %379 = OpCompositeExtract %float %_86_e 0
+        %380 = OpVectorShuffle %v2float %_86_e %_86_e 1 2
+        %381 = OpCompositeConstruct %v4float %378 %379 %380
+               OpStore %_skTemp19 %381 None
+               OpBranch %369
+        %369 = OpLabel
+      %_87_f = OpLoad %v4float %_skTemp19 None
+      %_88_h = OpCompositeExtract %float %_87_f 0
+        %384 = OpCompositeExtract %float %_87_f 1
+        %385 = OpCompositeExtract %float %_87_f 2
+  %_skTemp20 = OpExtInst %float %92 FMin %384 %385
+      %_89_i = OpFSub %float %_88_h %_skTemp20
+        %388 = OpFMul %float %_89_i %float_0_5
+      %_90_j = OpFSub %float %_88_h %388
+        %390 = OpCompositeExtract %float %_87_f 3
+        %391 = OpCompositeExtract %float %_87_f 1
+        %392 = OpCompositeExtract %float %_87_f 2
+        %393 = OpFSub %float %391 %392
+        %394 = OpFMul %float %_89_i %float_6
+        %396 = OpFAdd %float %394 %float_9_99999975en05
+        %398 = OpFDiv %float %393 %396
+        %399 = OpFAdd %float %390 %398
+  %_skTemp21 = OpExtInst %float %92 FAbs %399
+        %401 = OpFMul %float %_90_j %float_2
+        %402 = OpAccessChain %_ptr_Function_float %_84_a %uint_3
+        %403 = OpLoad %float %402 None
+        %404 = OpFSub %float %401 %403
+  %_skTemp22 = OpExtInst %float %92 FAbs %404
+        %406 = OpAccessChain %_ptr_Function_float %_84_a %uint_3
+        %407 = OpLoad %float %406 None
+        %408 = OpFAdd %float %407 %float_9_99999975en05
+        %409 = OpFSub %float %408 %_skTemp22
+      %_92_l = OpFDiv %float %_89_i %409
+        %411 = OpAccessChain %_ptr_Function_float %_84_a %uint_3
+        %412 = OpLoad %float %411 None
+        %413 = OpFAdd %float %412 %float_9_99999975en05
+      %_93_m = OpFDiv %float %_90_j %413
+        %415 = OpAccessChain %_ptr_Function_float %_84_a %uint_3
+        %416 = OpLoad %float %415 None
+        %417 = OpCompositeConstruct %v4float %_skTemp21 %_92_l %_93_m %416
+               OpStore %_84_a %417 None
+               OpBranch %342
+        %344 = OpLabel
+        %418 = OpAccessChain %_ptr_Function_float %_84_a %uint_3
+        %419 = OpLoad %float %418 None
+  %_skTemp23 = OpExtInst %float %92 FMax %419 %float_9_99999975en05
+        %421 = OpLoad %v4float %_84_a None
+        %422 = OpVectorShuffle %v3float %421 %421 0 1 2
+        %423 = OpCompositeConstruct %v3float %_skTemp23 %_skTemp23 %_skTemp23
+        %424 = OpFDiv %v3float %422 %423
+        %425 = OpAccessChain %_ptr_Function_float %_84_a %uint_3
+        %426 = OpLoad %float %425 None
+        %427 = OpCompositeConstruct %v4float %424 %426
+               OpStore %_84_a %427 None
+               OpBranch %342
+        %342 = OpLabel
+        %428 = OpLoad %uint %shadingSsboIndex None
+        %429 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %_storage1 %uint_0 %428 %uint_5
+        %432 = OpLoad %mat4v4float %429 None
+        %433 = OpLoad %v4float %_84_a None
+        %434 = OpMatrixTimesVector %v4float %432 %433
+        %435 = OpLoad %uint %shadingSsboIndex None
+        %436 = OpAccessChain %_ptr_StorageBuffer_v4float %_storage1 %uint_0 %435 %uint_6
+        %439 = OpLoad %v4float %436 None
+        %440 = OpFAdd %v4float %434 %439
+               OpStore %_94_f %440
+        %442 = OpINotEqual %bool %_85_d %108
+               OpSelectionMerge %443 None
+               OpBranchConditional %442 %444 %445
+        %444 = OpLabel
+        %446 = OpAccessChain %_ptr_Function_float %_94_f %uint_2
+        %447 = OpLoad %float %446 None
+        %448 = OpFMul %float %float_2 %447
+        %449 = OpFSub %float %448 %float_1
+  %_skTemp24 = OpExtInst %float %92 FAbs %449
+        %451 = OpFSub %float %float_1 %_skTemp24
+        %452 = OpAccessChain %_ptr_Function_float %_94_f %uint_1
+        %453 = OpLoad %float %452 None
+      %_95_b = OpFMul %float %451 %453
+        %455 = OpLoad %v4float %_94_f None
+        %456 = OpVectorShuffle %v3float %455 %455 0 0 0
+      %_96_c = OpFAdd %v3float %456 %458
+  %_skTemp25 = OpExtInst %v3float %92 Fract %_96_c
+        %461 = OpVectorTimesScalar %v3float %_skTemp25 %float_6
+        %462 = OpCompositeConstruct %v3float %float_3 %float_3 %float_3
+        %464 = OpFSub %v3float %461 %462
+  %_skTemp26 = OpExtInst %v3float %92 FAbs %464
+        %466 = OpCompositeConstruct %v3float %float_1 %float_1 %float_1
+        %467 = OpFSub %v3float %_skTemp26 %466
+  %_skTemp27 = OpExtInst %v3float %92 NClamp %467 %469 %470
+        %471 = OpCompositeConstruct %v3float %float_0_5 %float_0_5 %float_0_5
+        %472 = OpFSub %v3float %_skTemp27 %471
+        %473 = OpVectorTimesScalar %v3float %472 %_95_b
+        %474 = OpAccessChain %_ptr_Function_float %_94_f %uint_2
+        %475 = OpLoad %float %474 None
+        %476 = OpCompositeConstruct %v3float %475 %475 %475
+        %477 = OpFAdd %v3float %473 %476
+        %478 = OpAccessChain %_ptr_Function_float %_94_f %uint_3
+        %479 = OpLoad %float %478 None
+        %480 = OpVectorTimesScalar %v3float %477 %479
+        %481 = OpAccessChain %_ptr_Function_float %_94_f %uint_3
+        %482 = OpLoad %float %481 None
+        %483 = OpCompositeConstruct %v4float %480 %482
+  %_skTemp28 = OpExtInst %v4float %92 NClamp %483 %63 %317
+               OpStore %_94_f %_skTemp28 None
+               OpBranch %443
+        %445 = OpLabel
+        %485 = OpLoad %uint %shadingSsboIndex None
+        %486 = OpAccessChain %_ptr_StorageBuffer_int %_storage1 %uint_0 %485 %uint_8
+        %488 = OpLoad %int %486 None
+        %489 = OpINotEqual %bool %488 %108
+               OpSelectionMerge %490 None
+               OpBranchConditional %489 %491 %492
+        %491 = OpLabel
+        %493 = OpLoad %v4float %_94_f None
+  %_skTemp29 = OpExtInst %v4float %92 NClamp %493 %63 %317
+               OpStore %_94_f %_skTemp29 None
+               OpBranch %490
+        %492 = OpLabel
+        %495 = OpAccessChain %_ptr_Function_float %_94_f %uint_3
+        %496 = OpLoad %float %495 None
+  %_skTemp30 = OpExtInst %float %92 NClamp %496 %float_0 %float_1
+        %498 = OpAccessChain %_ptr_Function_float %_94_f %uint_3
+               OpStore %498 %_skTemp30 None
+               OpBranch %490
+        %490 = OpLabel
+        %499 = OpLoad %v4float %_94_f None
+        %500 = OpVectorShuffle %v3float %499 %499 0 1 2
+        %501 = OpAccessChain %_ptr_Function_float %_94_f %uint_3
+        %502 = OpLoad %float %501 None
+        %503 = OpVectorTimesScalar %v3float %500 %502
+        %504 = OpAccessChain %_ptr_Function_float %_94_f %uint_3
+        %505 = OpLoad %float %504 None
+        %506 = OpCompositeConstruct %v4float %503 %505
+               OpStore %_94_f %506 None
+               OpBranch %443
+        %443 = OpLabel
+ %outColor_0 = OpLoad %v4float %_94_f None
+        %508 = OpAccessChain %_ptr_Function_v4float %_stageOut_root %uint_0
+               OpStore %508 %outColor_0 None
+               OpReturn
+               OpFunctionEnd
+ %main_inner = OpFunction %FSOut None %511
+ %_stageIn_0 = OpFunctionParameter %FSIn
+        %512 = OpLabel
+  %_stageOut = OpVariable %_ptr_Function_FSOut Function %514
+        %515 = OpFunctionCall %void %_skslMain %_stageIn_0 %_stageOut
+        %516 = OpLoad %FSOut %_stageOut None
+               OpReturnValue %516
+               OpFunctionEnd
+       %main = OpFunction %void None %518
+        %519 = OpLabel
+        %520 = OpLoad %v2uint %main_loc0_Input None
+        %521 = OpLoad %v2float %main_loc1_Input None
+        %522 = OpCompositeConstruct %FSIn %520 %521
+        %523 = OpFunctionCall %FSOut %main_inner %522
+        %524 = OpCompositeExtract %v4float %523 0
+               OpStore %main_loc0_Output %524 None
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/bug/tint/379127084.wgsl.expected.wgsl b/test/tint/bug/tint/379127084.wgsl.expected.wgsl
new file mode 100644
index 0000000..4da39f7
--- /dev/null
+++ b/test/tint/bug/tint/379127084.wgsl.expected.wgsl
@@ -0,0 +1,220 @@
+diagnostic(off, derivative_uniformity);
+diagnostic(off, chromium.unreachable_code);
+
+struct FSIn {
+  @location(0) @interpolate(flat, either)
+  ssboIndicesVar : vec2<u32>,
+  @location(1)
+  localCoordsVar : vec2<f32>,
+}
+
+struct FSOut {
+  @location(0)
+  sk_FragColor : vec4<f32>,
+}
+
+struct IntrinsicUniforms {
+  @size(16)
+  viewport : vec4<f32>,
+  dstCopyBounds : vec4<f32>,
+}
+
+@group(0) @binding(0) var<uniform> _uniform0 : IntrinsicUniforms;
+
+struct FSUniforms {
+  fsUniformData : array<FSUniformData>,
+}
+
+@group(0) @binding(2) var<storage, read> _storage1 : FSUniforms;
+
+struct FSUniformData {
+  baseFrequency_1 : vec2<f32>,
+  stitchData_1 : vec2<f32>,
+  noiseType_1 : i32,
+  numOctaves_1 : i32,
+  stitching_1 : i32,
+  matrix_4 : mat4x4<f32>,
+  translate_4 : vec4<f32>,
+  inHSL_4 : i32,
+  clampRGB_4 : i32,
+}
+
+var<private> shadingSsboIndex : u32;
+
+@group(1) @binding(0) var permutationsSampler_1_Sampler : sampler;
+
+@group(1) @binding(1) var permutationsSampler_1_Texture : texture_2d<f32>;
+
+@group(1) @binding(2) var noiseSampler_1_Sampler : sampler;
+
+@group(1) @binding(3) var noiseSampler_1_Texture : texture_2d<f32>;
+
+fn _skslMain(_stageIn : FSIn, _stageOut : ptr<function, FSOut>) {
+  {
+    shadingSsboIndex = _stageIn.ssboIndicesVar.y;
+    let _56_d : i32 = _storage1.fsUniformData[shadingSsboIndex].noiseType_1;
+    var _57_k : vec2<f32> = vec2<f32>(((_stageIn.localCoordsVar + 0.5) * _storage1.fsUniformData[shadingSsboIndex].baseFrequency_1));
+    var _58_l : vec4<f32> = vec4<f32>(0.0);
+    var _59_m : vec2<f32> = vec2<f32>(_storage1.fsUniformData[shadingSsboIndex].stitchData_1);
+    var _60_n : f32 = 1.0;
+    {
+      var _61_o : i32 = 0;
+      loop {
+        if ((_61_o < _storage1.fsUniformData[shadingSsboIndex].numOctaves_1)) {
+          {
+            var _62_f : vec4<f32>;
+            let _skTemp2 = floor(_57_k);
+            _62_f = vec4<f32>(_skTemp2, _62_f.zw);
+            _62_f = vec4<f32>(_62_f.xy, (_62_f.xy + vec2<f32>(1.0)));
+            if (bool(_storage1.fsUniformData[shadingSsboIndex].stitching_1)) {
+              let _skTemp3 = step(_59_m.xyxy, _62_f);
+              _62_f = (_62_f - (_skTemp3 * _59_m.xyxy));
+            }
+            let _63_g : f32 = textureSampleBias(permutationsSampler_1_Texture, permutationsSampler_1_Sampler, vec2<f32>(vec2<f32>(((_62_f.x + 0.5) * 0.00390625), 0.5)), -(0.4749999999999999778)).x;
+            let _64_h : f32 = textureSampleBias(permutationsSampler_1_Texture, permutationsSampler_1_Sampler, vec2<f32>(vec2<f32>(((_62_f.z + 0.5) * 0.00390625), 0.5)), -(0.4749999999999999778)).x;
+            var _65_i : vec2<f32> = vec2<f32>(_63_g, _64_h);
+            if (false) {
+              let _skTemp4 = floor(((_65_i * vec2<f32>(255.0)) + vec2<f32>(0.5)));
+              _65_i = (_skTemp4 * vec2<f32>(0.00392156899999999975));
+            }
+            var _66_j : vec4<f32> = ((256.0 * _65_i.xyxy) + _62_f.yyww);
+            _66_j = (_66_j * vec4<f32>(0.00390625));
+            let _67_p : vec4<f32> = _66_j;
+            let _skTemp5 = fract(_57_k);
+            let _68_d : vec2<f32> = _skTemp5;
+            let _skTemp6 = smoothstep(vec2<f32>(0.0), vec2<f32>(1.0), _68_d);
+            let _69_e : vec2<f32> = _skTemp6;
+            const _70_f : f32 = 0.00390625;
+            var _71_g : vec4<f32>;
+            {
+              var _72_h : i32 = 0;
+              loop {
+                {
+                  let _73_i : f32 = ((f32(_72_h) + 0.5) * 0.25);
+                  let _74_j : vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.x), f32(_73_i)), -(0.4749999999999999778));
+                  let _75_k : vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.y), f32(_73_i)), -(0.4749999999999999778));
+                  let _76_l : vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.w), f32(_73_i)), -(0.4749999999999999778));
+                  let _77_m : vec4<f32> = textureSampleBias(noiseSampler_1_Texture, noiseSampler_1_Sampler, vec2<f32>(f32(_67_p.z), f32(_73_i)), -(0.4749999999999999778));
+                  var _78_n : vec2<f32> = _68_d;
+                  let _skTemp7 = dot((((_74_j.yw + (_74_j.xz * _70_f)) * 2.0) - 1.0), _78_n);
+                  var _79_o : f32 = _skTemp7;
+                  _78_n.x = (_78_n.x - 1.0);
+                  let _skTemp8 = dot((((_75_k.yw + (_75_k.xz * _70_f)) * 2.0) - 1.0), _78_n);
+                  var _80_p : f32 = _skTemp8;
+                  let _skTemp9 = mix(_79_o, _80_p, _69_e.x);
+                  let _81_q : f32 = _skTemp9;
+                  _78_n.y = (_78_n.y - 1.0);
+                  let _skTemp10 = dot((((_76_l.yw + (_76_l.xz * _70_f)) * 2.0) - 1.0), _78_n);
+                  _80_p = _skTemp10;
+                  _78_n.x = (_78_n.x + 1.0);
+                  let _skTemp11 = dot((((_77_m.yw + (_77_m.xz * _70_f)) * 2.0) - 1.0), _78_n);
+                  _79_o = _skTemp11;
+                  let _skTemp12 = mix(_79_o, _80_p, _69_e.x);
+                  let _82_r : f32 = _skTemp12;
+                  let _skTemp13 = mix(_81_q, _82_r, _69_e.y);
+                  _71_g[_72_h] = _skTemp13;
+                }
+
+                continuing {
+                  _72_h = (_72_h + i32(1));
+                  break if (_72_h >= 4);
+                }
+              }
+            }
+            var _83_q : vec4<f32> = _71_g;
+            if ((_56_d != 0)) {
+              let _skTemp14 = abs(_83_q);
+              _83_q = _skTemp14;
+            }
+            _58_l = (_58_l + (_83_q * _60_n));
+            _57_k = (_57_k * vec2<f32>(2.0));
+            _60_n = (_60_n * 0.5);
+            _59_m = (_59_m * vec2<f32>(2.0));
+          }
+        } else {
+          break;
+        }
+
+        continuing {
+          _61_o = (_61_o + i32(1));
+        }
+      }
+    }
+    if ((_56_d == 0)) {
+      _58_l = ((_58_l * vec4<f32>(0.5)) + vec4<f32>(0.5));
+    }
+    let _skTemp15 = saturate(_58_l);
+    _58_l = _skTemp15;
+    let _skTemp16 = dot(vec3<f32>(0.21260000000000001119, 0.71519999999999994689, 0.07220000000000000029), vec4<f32>(vec3<f32>((vec3<f32>(_58_l.xyz) * f32(_58_l.w))), f32(f32(_58_l.w))).xyz);
+    let _skTemp17 = saturate(_skTemp16);
+    var _84_a : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, _skTemp17);
+    let _85_d : i32 = _storage1.fsUniformData[shadingSsboIndex].inHSL_4;
+    if (bool(_85_d)) {
+      {
+        var _skTemp18 : vec4<f32>;
+        if ((_84_a.y < _84_a.z)) {
+          _skTemp18 = vec4<f32>(_84_a.zy, -(1.0), 0.66666669999999994545);
+        } else {
+          _skTemp18 = vec4<f32>(_84_a.yz, 0.0, -(0.33333334300000000416));
+        }
+        let _86_e : vec4<f32> = _skTemp18;
+        var _skTemp19 : vec4<f32>;
+        if ((_84_a.x < _86_e.x)) {
+          _skTemp19 = vec4<f32>(_86_e.x, _84_a.x, _86_e.yw);
+        } else {
+          _skTemp19 = vec4<f32>(_84_a.x, _86_e.x, _86_e.yz);
+        }
+        let _87_f : vec4<f32> = _skTemp19;
+        let _88_h : f32 = _87_f.x;
+        let _skTemp20 = min(_87_f.y, _87_f.z);
+        let _89_i : f32 = (_88_h - _skTemp20);
+        let _90_j : f32 = (_88_h - (_89_i * 0.5));
+        let _skTemp21 = abs((_87_f.w + ((_87_f.y - _87_f.z) / ((_89_i * 6.0) + 0.0001))));
+        let _91_k : f32 = _skTemp21;
+        let _skTemp22 = abs(((_90_j * 2.0) - _84_a.w));
+        let _92_l : f32 = (_89_i / ((_84_a.w + 0.0001) - _skTemp22));
+        let _93_m : f32 = (_90_j / (_84_a.w + 0.0001));
+        _84_a = vec4<f32>(_91_k, _92_l, _93_m, _84_a.w);
+      }
+    } else {
+      {
+        let _skTemp23 = max(_84_a.w, 0.0001);
+        _84_a = vec4<f32>((_84_a.xyz / _skTemp23), _84_a.w);
+      }
+    }
+    var _94_f : vec4<f32> = vec4<f32>(((_storage1.fsUniformData[shadingSsboIndex].matrix_4 * vec4<f32>(_84_a)) + _storage1.fsUniformData[shadingSsboIndex].translate_4));
+    if (bool(_85_d)) {
+      {
+        let _skTemp24 = abs(((2.0 * _94_f.z) - 1.0));
+        let _95_b : f32 = ((1.0 - _skTemp24) * _94_f.y);
+        let _96_c : vec3<f32> = (_94_f.xxx + vec3<f32>(0.0, 0.66666669999999994545, 0.33333334300000000416));
+        let _skTemp25 = fract(_96_c);
+        let _skTemp26 = abs(((_skTemp25 * 6.0) - 3.0));
+        let _skTemp27 = saturate((_skTemp26 - 1.0));
+        let _97_d : vec3<f32> = _skTemp27;
+        let _skTemp28 = saturate(vec4<f32>(((((_97_d - 0.5) * _95_b) + _94_f.z) * _94_f.w), _94_f.w));
+        _94_f = _skTemp28;
+      }
+    } else {
+      {
+        if (bool(_storage1.fsUniformData[shadingSsboIndex].clampRGB_4)) {
+          let _skTemp29 = saturate(_94_f);
+          _94_f = _skTemp29;
+        } else {
+          let _skTemp30 = saturate(_94_f.w);
+          _94_f.w = _skTemp30;
+        }
+        _94_f = vec4<f32>((_94_f.xyz * _94_f.w), _94_f.w);
+      }
+    }
+    let outColor_0 : vec4<f32> = _94_f;
+    (*(_stageOut)).sk_FragColor = outColor_0;
+  }
+}
+
+@fragment
+fn main(_stageIn : FSIn) -> FSOut {
+  var _stageOut : FSOut;
+  _skslMain(_stageIn, &(_stageOut));
+  return _stageOut;
+}
diff --git a/test/tint/bug/tint/403.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/403.wgsl.expected.ir.dxc.hlsl
index 990d03a..fcfba61 100644
--- a/test/tint/bug/tint/403.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/403.wgsl.expected.ir.dxc.hlsl
@@ -36,7 +36,7 @@
   indexable = v_8;
   float2 x_51 = indexable[x_46];
   float2 x_52 = mul(x_51, float2x2((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])));
-  return float4(x_52[0u], x_52[1u], 0.0f, 1.0f);
+  return float4(x_52.x, x_52.y, 0.0f, 1.0f);
 }
 
 main_outputs main(main_inputs inputs) {
diff --git a/test/tint/bug/tint/403.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/403.wgsl.expected.ir.fxc.hlsl
index 990d03a..fcfba61 100644
--- a/test/tint/bug/tint/403.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/403.wgsl.expected.ir.fxc.hlsl
@@ -36,7 +36,7 @@
   indexable = v_8;
   float2 x_51 = indexable[x_46];
   float2 x_52 = mul(x_51, float2x2((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])));
-  return float4(x_52[0u], x_52[1u], 0.0f, 1.0f);
+  return float4(x_52.x, x_52.y, 0.0f, 1.0f);
 }
 
 main_outputs main(main_inputs inputs) {
diff --git a/test/tint/bug/tint/413.spvasm.expected.ir.dxc.hlsl b/test/tint/bug/tint/413.spvasm.expected.ir.dxc.hlsl
index c7d3608..6a7ae80 100644
--- a/test/tint/bug/tint/413.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/413.spvasm.expected.ir.dxc.hlsl
@@ -5,7 +5,7 @@
   uint4 srcValue = (0u).xxxx;
   int2 v = int2((int(0)).xx);
   srcValue = uint4(Src.Load(int3(v, int(int(0)))));
-  srcValue[0u] = (srcValue.x + 1u);
+  srcValue.x = (srcValue.x + 1u);
   uint4 x_27 = srcValue;
   Dst[(int(0)).xx] = x_27;
 }
diff --git a/test/tint/bug/tint/413.spvasm.expected.ir.fxc.hlsl b/test/tint/bug/tint/413.spvasm.expected.ir.fxc.hlsl
index c7d3608..6a7ae80 100644
--- a/test/tint/bug/tint/413.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/413.spvasm.expected.ir.fxc.hlsl
@@ -5,7 +5,7 @@
   uint4 srcValue = (0u).xxxx;
   int2 v = int2((int(0)).xx);
   srcValue = uint4(Src.Load(int3(v, int(int(0)))));
-  srcValue[0u] = (srcValue.x + 1u);
+  srcValue.x = (srcValue.x + 1u);
   uint4 x_27 = srcValue;
   Dst[(int(0)).xx] = x_27;
 }
diff --git a/test/tint/bug/tint/534.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/534.wgsl.expected.ir.dxc.hlsl
index 18e15b2..648e3b9 100644
--- a/test/tint/bug/tint/534.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/534.wgsl.expected.ir.dxc.hlsl
@@ -19,12 +19,12 @@
 
 void main_inner(uint3 GlobalInvocationID) {
   uint2 v = (0u).xx;
-  src.GetDimensions(v[0u], v[1u]);
+  src.GetDimensions(v.x, v.y);
   uint2 size = v;
   uint2 dstTexCoord = GlobalInvocationID.xy;
   uint2 srcTexCoord = dstTexCoord;
   if ((uniforms[0u].x == 1u)) {
-    srcTexCoord[1u] = ((size.y - dstTexCoord.y) - 1u);
+    srcTexCoord.y = ((size.y - dstTexCoord.y) - 1u);
   }
   int2 v_1 = int2(srcTexCoord);
   float4 srcColor = float4(src.Load(int3(v_1, int(int(0)))));
@@ -55,7 +55,7 @@
       continue;
     }
   }
-  uint outputIndex = ((GlobalInvocationID[1u] * uint(size.x)) + GlobalInvocationID[0u]);
+  uint outputIndex = ((GlobalInvocationID.y * uint(size.x)) + GlobalInvocationID.x);
   if (success) {
     output.Store((0u + (uint(outputIndex) * 4u)), 1u);
   } else {
diff --git a/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl
index 040f13e..284e962 100644
--- a/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl
@@ -19,12 +19,12 @@
 
 void main_inner(uint3 GlobalInvocationID) {
   uint2 v = (0u).xx;
-  src.GetDimensions(v[0u], v[1u]);
+  src.GetDimensions(v.x, v.y);
   uint2 size = v;
   uint2 dstTexCoord = GlobalInvocationID.xy;
   uint2 srcTexCoord = dstTexCoord;
   if ((uniforms[0u].x == 1u)) {
-    srcTexCoord[1u] = ((size.y - dstTexCoord.y) - 1u);
+    srcTexCoord.y = ((size.y - dstTexCoord.y) - 1u);
   }
   int2 v_1 = int2(srcTexCoord);
   float4 srcColor = float4(src.Load(int3(v_1, int(int(0)))));
@@ -57,7 +57,7 @@
       continue;
     }
   }
-  uint outputIndex = ((GlobalInvocationID[1u] * uint(size.x)) + GlobalInvocationID[0u]);
+  uint outputIndex = ((GlobalInvocationID.y * uint(size.x)) + GlobalInvocationID.x);
   if (success) {
     output.Store((0u + (uint(outputIndex) * 4u)), 1u);
   } else {
diff --git a/test/tint/bug/tint/744.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/744.wgsl.expected.ir.dxc.hlsl
index 874f6a2..b82e738 100644
--- a/test/tint/bug/tint/744.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/744.wgsl.expected.ir.dxc.hlsl
@@ -10,7 +10,7 @@
   uint4 uniforms[2];
 };
 void main_inner(uint3 global_id) {
-  uint2 resultCell = uint2(global_id[1u], global_id[0u]);
+  uint2 resultCell = uint2(global_id.y, global_id.x);
   uint dimInner = uniforms[0u].y;
   uint dimOutter = uniforms[1u].y;
   uint result = 0u;
@@ -21,8 +21,8 @@
       } else {
         break;
       }
-      uint a = (i + (resultCell[0u] * dimInner));
-      uint b = (resultCell[1u] + (i * dimOutter));
+      uint a = (i + (resultCell.x * dimInner));
+      uint b = (resultCell.y + (i * dimOutter));
       uint v = result;
       uint v_1 = firstMatrix.Load((0u + (uint(a) * 4u)));
       result = (v + (v_1 * secondMatrix.Load((0u + (uint(b) * 4u)))));
@@ -32,7 +32,7 @@
       continue;
     }
   }
-  uint index = (resultCell[1u] + (resultCell[0u] * dimOutter));
+  uint index = (resultCell.y + (resultCell.x * dimOutter));
   uint v_2 = (uint(index) * 4u);
   resultMatrix.Store((0u + v_2), result);
 }
diff --git a/test/tint/bug/tint/744.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/744.wgsl.expected.ir.fxc.hlsl
index 874f6a2..b82e738 100644
--- a/test/tint/bug/tint/744.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/744.wgsl.expected.ir.fxc.hlsl
@@ -10,7 +10,7 @@
   uint4 uniforms[2];
 };
 void main_inner(uint3 global_id) {
-  uint2 resultCell = uint2(global_id[1u], global_id[0u]);
+  uint2 resultCell = uint2(global_id.y, global_id.x);
   uint dimInner = uniforms[0u].y;
   uint dimOutter = uniforms[1u].y;
   uint result = 0u;
@@ -21,8 +21,8 @@
       } else {
         break;
       }
-      uint a = (i + (resultCell[0u] * dimInner));
-      uint b = (resultCell[1u] + (i * dimOutter));
+      uint a = (i + (resultCell.x * dimInner));
+      uint b = (resultCell.y + (i * dimOutter));
       uint v = result;
       uint v_1 = firstMatrix.Load((0u + (uint(a) * 4u)));
       result = (v + (v_1 * secondMatrix.Load((0u + (uint(b) * 4u)))));
@@ -32,7 +32,7 @@
       continue;
     }
   }
-  uint index = (resultCell[1u] + (resultCell[0u] * dimOutter));
+  uint index = (resultCell.y + (resultCell.x * dimOutter));
   uint v_2 = (uint(index) * 4u);
   resultMatrix.Store((0u + v_2), result);
 }
diff --git a/test/tint/bug/tint/757.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/757.wgsl.expected.ir.dxc.hlsl
index a4c88a6..738bd64 100644
--- a/test/tint/bug/tint/757.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/757.wgsl.expected.ir.dxc.hlsl
@@ -9,7 +9,7 @@
 Texture2DArray<float4> myTexture : register(t1);
 RWByteAddressBuffer result : register(u3);
 void main_inner(uint3 GlobalInvocationID) {
-  uint flatIndex = (((4u * GlobalInvocationID[2u]) + (2u * GlobalInvocationID[1u])) + GlobalInvocationID[0u]);
+  uint flatIndex = (((4u * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
   flatIndex = (flatIndex * 1u);
   int2 v = int2(int2(GlobalInvocationID.xy));
   int v_1 = int(int(0));
diff --git a/test/tint/bug/tint/757.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/757.wgsl.expected.ir.fxc.hlsl
index a4c88a6..738bd64 100644
--- a/test/tint/bug/tint/757.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/757.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 Texture2DArray<float4> myTexture : register(t1);
 RWByteAddressBuffer result : register(u3);
 void main_inner(uint3 GlobalInvocationID) {
-  uint flatIndex = (((4u * GlobalInvocationID[2u]) + (2u * GlobalInvocationID[1u])) + GlobalInvocationID[0u]);
+  uint flatIndex = (((4u * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
   flatIndex = (flatIndex * 1u);
   int2 v = int2(int2(GlobalInvocationID.xy));
   int v_1 = int(int(0));
diff --git a/test/tint/bug/tint/764.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/764.wgsl.expected.ir.dxc.hlsl
index 4dda977..ea04dd9 100644
--- a/test/tint/bug/tint/764.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/764.wgsl.expected.ir.dxc.hlsl
@@ -2,7 +2,7 @@
 void f() {
   float4x4 m = float4x4((1.0f).xxxx, (1.0f).xxxx, (1.0f).xxxx, (1.0f).xxxx);
   float4 v1 = m[int(0)];
-  float a = v1[int(0)];
+  float a = v1.x;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/764.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/764.wgsl.expected.ir.fxc.hlsl
index 4dda977..ea04dd9 100644
--- a/test/tint/bug/tint/764.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/764.wgsl.expected.ir.fxc.hlsl
@@ -2,7 +2,7 @@
 void f() {
   float4x4 m = float4x4((1.0f).xxxx, (1.0f).xxxx, (1.0f).xxxx, (1.0f).xxxx);
   float4 v1 = m[int(0)];
-  float a = v1[int(0)];
+  float a = v1.x;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/824.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/824.wgsl.expected.ir.dxc.hlsl
index 12aa65a..b0a3df4 100644
--- a/test/tint/bug/tint/824.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/824.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
 
 Output main_inner(uint VertexIndex, uint InstanceIndex) {
   float2 zv[4] = {(0.20000000298023223877f).xx, (0.30000001192092895508f).xx, (-0.10000000149011611938f).xx, (1.10000002384185791016f).xx};
-  float z = zv[InstanceIndex][0u];
+  float z = zv[InstanceIndex].x;
   Output output = (Output)0;
   output.Position = float4(0.5f, 0.5f, z, 1.0f);
   float4 colors[4] = {float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), (1.0f).xxxx};
diff --git a/test/tint/bug/tint/824.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/824.wgsl.expected.ir.fxc.hlsl
index 12aa65a..b0a3df4 100644
--- a/test/tint/bug/tint/824.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/824.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
 
 Output main_inner(uint VertexIndex, uint InstanceIndex) {
   float2 zv[4] = {(0.20000000298023223877f).xx, (0.30000001192092895508f).xx, (-0.10000000149011611938f).xx, (1.10000002384185791016f).xx};
-  float z = zv[InstanceIndex][0u];
+  float z = zv[InstanceIndex].x;
   Output output = (Output)0;
   output.Position = float4(0.5f, 0.5f, z, 1.0f);
   float4 colors[4] = {float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), (1.0f).xxxx};
diff --git a/test/tint/bug/tint/827.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/827.wgsl.expected.ir.dxc.hlsl
index 3c909a7..379ded0 100644
--- a/test/tint/bug/tint/827.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/827.wgsl.expected.ir.dxc.hlsl
@@ -6,9 +6,9 @@
 Texture2D tex : register(t0);
 RWByteAddressBuffer result : register(u1);
 void main_inner(uint3 GlobalInvocationId) {
-  uint v = (uint(((GlobalInvocationId[1u] * 128u) + GlobalInvocationId[0u])) * 4u);
-  int v_1 = int(GlobalInvocationId[0u]);
-  int2 v_2 = int2(int2(v_1, int(GlobalInvocationId[1u])));
+  uint v = (uint(((GlobalInvocationId.y * 128u) + GlobalInvocationId.x)) * 4u);
+  int v_1 = int(GlobalInvocationId.x);
+  int2 v_2 = int2(int2(v_1, int(GlobalInvocationId.y)));
   result.Store((0u + v), asuint(tex.Load(int3(v_2, int(int(0)))).x));
 }
 
diff --git a/test/tint/bug/tint/827.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/827.wgsl.expected.ir.fxc.hlsl
index 3c909a7..379ded0 100644
--- a/test/tint/bug/tint/827.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/827.wgsl.expected.ir.fxc.hlsl
@@ -6,9 +6,9 @@
 Texture2D tex : register(t0);
 RWByteAddressBuffer result : register(u1);
 void main_inner(uint3 GlobalInvocationId) {
-  uint v = (uint(((GlobalInvocationId[1u] * 128u) + GlobalInvocationId[0u])) * 4u);
-  int v_1 = int(GlobalInvocationId[0u]);
-  int2 v_2 = int2(int2(v_1, int(GlobalInvocationId[1u])));
+  uint v = (uint(((GlobalInvocationId.y * 128u) + GlobalInvocationId.x)) * 4u);
+  int v_1 = int(GlobalInvocationId.x);
+  int2 v_2 = int2(int2(v_1, int(GlobalInvocationId.y)));
   result.Store((0u + v), asuint(tex.Load(int3(v_2, int(int(0)))).x));
 }
 
diff --git a/test/tint/bug/tint/913.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/913.wgsl.expected.ir.dxc.hlsl
index e197e97..f2dfb96 100644
--- a/test/tint/bug/tint/913.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/913.wgsl.expected.ir.dxc.hlsl
@@ -15,31 +15,31 @@
 
 void main_inner(uint3 GlobalInvocationID) {
   uint2 v = (0u).xx;
-  src.GetDimensions(v[0u], v[1u]);
+  src.GetDimensions(v.x, v.y);
   uint2 srcSize = v;
   uint2 v_1 = (0u).xx;
-  tint_symbol.GetDimensions(v_1[0u], v_1[1u]);
+  tint_symbol.GetDimensions(v_1.x, v_1.y);
   uint2 dstSize = v_1;
   uint2 dstTexCoord = uint2(GlobalInvocationID.xy);
   float4 nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
   bool success = true;
   bool v_2 = false;
-  if ((dstTexCoord[0u] < uniforms[1u].x)) {
+  if ((dstTexCoord.x < uniforms[1u].x)) {
     v_2 = true;
   } else {
-    v_2 = (dstTexCoord[1u] < uniforms[1u].y);
+    v_2 = (dstTexCoord.y < uniforms[1u].y);
   }
   bool v_3 = false;
   if (v_2) {
     v_3 = true;
   } else {
-    v_3 = (dstTexCoord[0u] >= (uniforms[1u].x + uniforms[1u].z));
+    v_3 = (dstTexCoord.x >= (uniforms[1u].x + uniforms[1u].z));
   }
   bool v_4 = false;
   if (v_3) {
     v_4 = true;
   } else {
-    v_4 = (dstTexCoord[1u] >= (uniforms[1u].y + uniforms[1u].w));
+    v_4 = (dstTexCoord.y >= (uniforms[1u].y + uniforms[1u].w));
   }
   if (v_4) {
     bool v_5 = false;
@@ -53,7 +53,7 @@
   } else {
     uint2 srcTexCoord = ((dstTexCoord - uniforms[1u].xy) + uniforms[0u].zw);
     if ((uniforms[0u].x == 1u)) {
-      srcTexCoord[1u] = ((srcSize[1u] - srcTexCoord.y) - 1u);
+      srcTexCoord.y = ((srcSize.y - srcTexCoord.y) - 1u);
     }
     int2 v_7 = int2(int2(srcTexCoord));
     float4 srcColor = float4(src.Load(int3(v_7, int(int(0)))));
@@ -62,13 +62,13 @@
     if ((uniforms[0u].y == 2u)) {
       bool v_9 = false;
       if (success) {
-        v_9 = aboutEqual(dstColor[0u], srcColor[0u]);
+        v_9 = aboutEqual(dstColor.x, srcColor.x);
       } else {
         v_9 = false;
       }
       bool v_10 = false;
       if (v_9) {
-        v_10 = aboutEqual(dstColor[1u], srcColor[1u]);
+        v_10 = aboutEqual(dstColor.y, srcColor.y);
       } else {
         v_10 = false;
       }
@@ -76,32 +76,32 @@
     } else {
       bool v_11 = false;
       if (success) {
-        v_11 = aboutEqual(dstColor[0u], srcColor[0u]);
+        v_11 = aboutEqual(dstColor.x, srcColor.x);
       } else {
         v_11 = false;
       }
       bool v_12 = false;
       if (v_11) {
-        v_12 = aboutEqual(dstColor[1u], srcColor[1u]);
+        v_12 = aboutEqual(dstColor.y, srcColor.y);
       } else {
         v_12 = false;
       }
       bool v_13 = false;
       if (v_12) {
-        v_13 = aboutEqual(dstColor[2u], srcColor[2u]);
+        v_13 = aboutEqual(dstColor.z, srcColor.z);
       } else {
         v_13 = false;
       }
       bool v_14 = false;
       if (v_13) {
-        v_14 = aboutEqual(dstColor[3u], srcColor[3u]);
+        v_14 = aboutEqual(dstColor.w, srcColor.w);
       } else {
         v_14 = false;
       }
       success = v_14;
     }
   }
-  uint outputIndex = ((GlobalInvocationID[1u] * dstSize[0u]) + GlobalInvocationID[0u]);
+  uint outputIndex = ((GlobalInvocationID.y * dstSize.x) + GlobalInvocationID.x);
   if (success) {
     output.Store((0u + (uint(outputIndex) * 4u)), 1u);
   } else {
diff --git a/test/tint/bug/tint/913.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/913.wgsl.expected.ir.fxc.hlsl
index e197e97..f2dfb96 100644
--- a/test/tint/bug/tint/913.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/913.wgsl.expected.ir.fxc.hlsl
@@ -15,31 +15,31 @@
 
 void main_inner(uint3 GlobalInvocationID) {
   uint2 v = (0u).xx;
-  src.GetDimensions(v[0u], v[1u]);
+  src.GetDimensions(v.x, v.y);
   uint2 srcSize = v;
   uint2 v_1 = (0u).xx;
-  tint_symbol.GetDimensions(v_1[0u], v_1[1u]);
+  tint_symbol.GetDimensions(v_1.x, v_1.y);
   uint2 dstSize = v_1;
   uint2 dstTexCoord = uint2(GlobalInvocationID.xy);
   float4 nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
   bool success = true;
   bool v_2 = false;
-  if ((dstTexCoord[0u] < uniforms[1u].x)) {
+  if ((dstTexCoord.x < uniforms[1u].x)) {
     v_2 = true;
   } else {
-    v_2 = (dstTexCoord[1u] < uniforms[1u].y);
+    v_2 = (dstTexCoord.y < uniforms[1u].y);
   }
   bool v_3 = false;
   if (v_2) {
     v_3 = true;
   } else {
-    v_3 = (dstTexCoord[0u] >= (uniforms[1u].x + uniforms[1u].z));
+    v_3 = (dstTexCoord.x >= (uniforms[1u].x + uniforms[1u].z));
   }
   bool v_4 = false;
   if (v_3) {
     v_4 = true;
   } else {
-    v_4 = (dstTexCoord[1u] >= (uniforms[1u].y + uniforms[1u].w));
+    v_4 = (dstTexCoord.y >= (uniforms[1u].y + uniforms[1u].w));
   }
   if (v_4) {
     bool v_5 = false;
@@ -53,7 +53,7 @@
   } else {
     uint2 srcTexCoord = ((dstTexCoord - uniforms[1u].xy) + uniforms[0u].zw);
     if ((uniforms[0u].x == 1u)) {
-      srcTexCoord[1u] = ((srcSize[1u] - srcTexCoord.y) - 1u);
+      srcTexCoord.y = ((srcSize.y - srcTexCoord.y) - 1u);
     }
     int2 v_7 = int2(int2(srcTexCoord));
     float4 srcColor = float4(src.Load(int3(v_7, int(int(0)))));
@@ -62,13 +62,13 @@
     if ((uniforms[0u].y == 2u)) {
       bool v_9 = false;
       if (success) {
-        v_9 = aboutEqual(dstColor[0u], srcColor[0u]);
+        v_9 = aboutEqual(dstColor.x, srcColor.x);
       } else {
         v_9 = false;
       }
       bool v_10 = false;
       if (v_9) {
-        v_10 = aboutEqual(dstColor[1u], srcColor[1u]);
+        v_10 = aboutEqual(dstColor.y, srcColor.y);
       } else {
         v_10 = false;
       }
@@ -76,32 +76,32 @@
     } else {
       bool v_11 = false;
       if (success) {
-        v_11 = aboutEqual(dstColor[0u], srcColor[0u]);
+        v_11 = aboutEqual(dstColor.x, srcColor.x);
       } else {
         v_11 = false;
       }
       bool v_12 = false;
       if (v_11) {
-        v_12 = aboutEqual(dstColor[1u], srcColor[1u]);
+        v_12 = aboutEqual(dstColor.y, srcColor.y);
       } else {
         v_12 = false;
       }
       bool v_13 = false;
       if (v_12) {
-        v_13 = aboutEqual(dstColor[2u], srcColor[2u]);
+        v_13 = aboutEqual(dstColor.z, srcColor.z);
       } else {
         v_13 = false;
       }
       bool v_14 = false;
       if (v_13) {
-        v_14 = aboutEqual(dstColor[3u], srcColor[3u]);
+        v_14 = aboutEqual(dstColor.w, srcColor.w);
       } else {
         v_14 = false;
       }
       success = v_14;
     }
   }
-  uint outputIndex = ((GlobalInvocationID[1u] * dstSize[0u]) + GlobalInvocationID[0u]);
+  uint outputIndex = ((GlobalInvocationID.y * dstSize.x) + GlobalInvocationID.x);
   if (success) {
     output.Store((0u + (uint(outputIndex) * 4u)), 1u);
   } else {
diff --git a/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl
index 2845d3d..00878bc 100644
--- a/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/914.wgsl.expected.ir.dxc.hlsl
@@ -77,10 +77,10 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  uint tileRow = (local_id[1u] * 4u);
-  uint tileCol = (local_id[0u] * 4u);
-  uint globalRow = (global_id[1u] * 4u);
-  uint globalCol = (global_id[0u] * 4u);
+  uint tileRow = (local_id.y * 4u);
+  uint tileCol = (local_id.x * 4u);
+  uint globalRow = (global_id.y * 4u);
+  uint globalCol = (global_id.x * 4u);
   uint numTiles = (tint_div_u32((uniforms[0u].y - 1u), 64u) + 1u);
   float acc[16] = (float[16])0;
   float ACached = 0.0f;
@@ -101,9 +101,9 @@
     }
   }
   uint ColPerThreadA = 4u;
-  uint tileColA = (local_id[0u] * ColPerThreadA);
+  uint tileColA = (local_id.x * ColPerThreadA);
   uint RowPerThreadB = 4u;
-  uint tileRowB = (local_id[1u] * RowPerThreadB);
+  uint tileRowB = (local_id.y * RowPerThreadB);
   {
     uint t = 0u;
     while(true) {
diff --git a/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl
index 2845d3d..00878bc 100644
--- a/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/914.wgsl.expected.ir.fxc.hlsl
@@ -77,10 +77,10 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  uint tileRow = (local_id[1u] * 4u);
-  uint tileCol = (local_id[0u] * 4u);
-  uint globalRow = (global_id[1u] * 4u);
-  uint globalCol = (global_id[0u] * 4u);
+  uint tileRow = (local_id.y * 4u);
+  uint tileCol = (local_id.x * 4u);
+  uint globalRow = (global_id.y * 4u);
+  uint globalCol = (global_id.x * 4u);
   uint numTiles = (tint_div_u32((uniforms[0u].y - 1u), 64u) + 1u);
   float acc[16] = (float[16])0;
   float ACached = 0.0f;
@@ -101,9 +101,9 @@
     }
   }
   uint ColPerThreadA = 4u;
-  uint tileColA = (local_id[0u] * ColPerThreadA);
+  uint tileColA = (local_id.x * ColPerThreadA);
   uint RowPerThreadB = 4u;
-  uint tileRowB = (local_id[1u] * RowPerThreadB);
+  uint tileRowB = (local_id.y * RowPerThreadB);
   {
     uint t = 0u;
     while(true) {
diff --git a/test/tint/bug/tint/922.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/922.wgsl.expected.ir.dxc.hlsl
index 3e60f34..6bc2a18 100644
--- a/test/tint/bug/tint/922.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/922.wgsl.expected.ir.dxc.hlsl
@@ -60,7 +60,7 @@
   Mat4x3_ x_e2 = m1;
   Mat4x3_ x_e5 = m1;
   Mat4x3_ x_e8 = m1;
-  return float3(x_e2.mx[0u], x_e5.my[0u], x_e8.mz[0u]);
+  return float3(x_e2.mx.x, x_e5.my.x, x_e8.mz.x);
 }
 
 float3 Mat4x3GetCol1_(Mat4x3_ m2) {
@@ -69,7 +69,7 @@
   Mat4x3_ x_e2 = m3;
   Mat4x3_ x_e5 = m3;
   Mat4x3_ x_e8 = m3;
-  return float3(x_e2.mx[1u], x_e5.my[1u], x_e8.mz[1u]);
+  return float3(x_e2.mx.y, x_e5.my.y, x_e8.mz.y);
 }
 
 float3 Mat4x3GetCol2_(Mat4x3_ m4) {
@@ -78,7 +78,7 @@
   Mat4x3_ x_e2 = m5;
   Mat4x3_ x_e5 = m5;
   Mat4x3_ x_e8 = m5;
-  return float3(x_e2.mx[2u], x_e5.my[2u], x_e8.mz[2u]);
+  return float3(x_e2.mx.z, x_e5.my.z, x_e8.mz.z);
 }
 
 float3 Mat4x3GetCol3_(Mat4x3_ m6) {
@@ -87,7 +87,7 @@
   Mat4x3_ x_e2 = m7;
   Mat4x3_ x_e5 = m7;
   Mat4x3_ x_e8 = m7;
-  return float3(x_e2.mx[3u], x_e5.my[3u], x_e8.mz[3u]);
+  return float3(x_e2.mx.w, x_e5.my.w, x_e8.mz.w);
 }
 
 float4 Mul(Mat4x4_ m8, float4 v) {
@@ -286,7 +286,7 @@
   float4 x_e50 = a_Color1;
   v_Color = x_e50;
   float4 x_e52 = asfloat(global1[2u]);
-  if ((x_e52[0u] == 2.0f)) {
+  if ((x_e52.x == 2.0f)) {
     float3 x_e59 = a_Normal1;
     Mat4x2_ x_e64 = v_10(0u);
     float3 x_e65 = a_Normal1;
diff --git a/test/tint/bug/tint/922.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/922.wgsl.expected.ir.fxc.hlsl
index 3e60f34..6bc2a18 100644
--- a/test/tint/bug/tint/922.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/922.wgsl.expected.ir.fxc.hlsl
@@ -60,7 +60,7 @@
   Mat4x3_ x_e2 = m1;
   Mat4x3_ x_e5 = m1;
   Mat4x3_ x_e8 = m1;
-  return float3(x_e2.mx[0u], x_e5.my[0u], x_e8.mz[0u]);
+  return float3(x_e2.mx.x, x_e5.my.x, x_e8.mz.x);
 }
 
 float3 Mat4x3GetCol1_(Mat4x3_ m2) {
@@ -69,7 +69,7 @@
   Mat4x3_ x_e2 = m3;
   Mat4x3_ x_e5 = m3;
   Mat4x3_ x_e8 = m3;
-  return float3(x_e2.mx[1u], x_e5.my[1u], x_e8.mz[1u]);
+  return float3(x_e2.mx.y, x_e5.my.y, x_e8.mz.y);
 }
 
 float3 Mat4x3GetCol2_(Mat4x3_ m4) {
@@ -78,7 +78,7 @@
   Mat4x3_ x_e2 = m5;
   Mat4x3_ x_e5 = m5;
   Mat4x3_ x_e8 = m5;
-  return float3(x_e2.mx[2u], x_e5.my[2u], x_e8.mz[2u]);
+  return float3(x_e2.mx.z, x_e5.my.z, x_e8.mz.z);
 }
 
 float3 Mat4x3GetCol3_(Mat4x3_ m6) {
@@ -87,7 +87,7 @@
   Mat4x3_ x_e2 = m7;
   Mat4x3_ x_e5 = m7;
   Mat4x3_ x_e8 = m7;
-  return float3(x_e2.mx[3u], x_e5.my[3u], x_e8.mz[3u]);
+  return float3(x_e2.mx.w, x_e5.my.w, x_e8.mz.w);
 }
 
 float4 Mul(Mat4x4_ m8, float4 v) {
@@ -286,7 +286,7 @@
   float4 x_e50 = a_Color1;
   v_Color = x_e50;
   float4 x_e52 = asfloat(global1[2u]);
-  if ((x_e52[0u] == 2.0f)) {
+  if ((x_e52.x == 2.0f)) {
     float3 x_e59 = a_Normal1;
     Mat4x2_ x_e64 = v_10(0u);
     float3 x_e65 = a_Normal1;
diff --git a/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl
index d39696a..ab1e98b 100644
--- a/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/942.wgsl.expected.ir.dxc.hlsl
@@ -38,7 +38,7 @@
   GroupMemoryBarrierWithGroupSync();
   uint filterOffset = tint_div_u32((params[0u].x - 1u), 2u);
   uint3 v_2 = (0u).xxx;
-  inputTex.GetDimensions(uint(int(0)), v_2[0u], v_2[1u], v_2[2u]);
+  inputTex.GetDimensions(uint(int(0)), v_2.x, v_2.y, v_2.z);
   uint2 dims = v_2.xy;
   uint2 v_3 = ((WorkGroupID.xy * uint2(params[0u].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u)));
   uint2 baseIndex = (v_3 - uint2(filterOffset, 0u));
@@ -61,7 +61,7 @@
             loadIndex = loadIndex.yx;
           }
           uint v_4 = r;
-          uint v_5 = ((4u * LocalInvocationID[0u]) + c);
+          uint v_5 = ((4u * LocalInvocationID.x) + c);
           float2 v_6 = (float2(loadIndex) + (0.25f).xx);
           float2 v_7 = (v_6 / float2(dims));
           tile[v_4][v_5] = inputTex.SampleLevel(samp, v_7, float(0.0f)).xyz;
@@ -96,7 +96,7 @@
           if ((flip[0u].x != 0u)) {
             writeIndex = writeIndex.yx;
           }
-          uint center = ((4u * LocalInvocationID[0u]) + c);
+          uint center = ((4u * LocalInvocationID.x) + c);
           bool v_8 = false;
           if ((center >= filterOffset)) {
             v_8 = (center < (256u - filterOffset));
diff --git a/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl
index d39696a..ab1e98b 100644
--- a/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/942.wgsl.expected.ir.fxc.hlsl
@@ -38,7 +38,7 @@
   GroupMemoryBarrierWithGroupSync();
   uint filterOffset = tint_div_u32((params[0u].x - 1u), 2u);
   uint3 v_2 = (0u).xxx;
-  inputTex.GetDimensions(uint(int(0)), v_2[0u], v_2[1u], v_2[2u]);
+  inputTex.GetDimensions(uint(int(0)), v_2.x, v_2.y, v_2.z);
   uint2 dims = v_2.xy;
   uint2 v_3 = ((WorkGroupID.xy * uint2(params[0u].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u)));
   uint2 baseIndex = (v_3 - uint2(filterOffset, 0u));
@@ -61,7 +61,7 @@
             loadIndex = loadIndex.yx;
           }
           uint v_4 = r;
-          uint v_5 = ((4u * LocalInvocationID[0u]) + c);
+          uint v_5 = ((4u * LocalInvocationID.x) + c);
           float2 v_6 = (float2(loadIndex) + (0.25f).xx);
           float2 v_7 = (v_6 / float2(dims));
           tile[v_4][v_5] = inputTex.SampleLevel(samp, v_7, float(0.0f)).xyz;
@@ -96,7 +96,7 @@
           if ((flip[0u].x != 0u)) {
             writeIndex = writeIndex.yx;
           }
-          uint center = ((4u * LocalInvocationID[0u]) + c);
+          uint center = ((4u * LocalInvocationID.x) + c);
           bool v_8 = false;
           if ((center >= filterOffset)) {
             v_8 = (center < (256u - filterOffset));
diff --git a/test/tint/bug/tint/948.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/948.wgsl.expected.ir.dxc.hlsl
index 08c16eb..7cbc04c 100644
--- a/test/tint/bug/tint/948.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/948.wgsl.expected.ir.dxc.hlsl
@@ -50,9 +50,9 @@
   float x_51 = fX;
   float2 v_2 = float2(x_51, 0.5f);
   float4 x_54 = frameMapTexture.SampleBias(frameMapSampler, v_2, clamp(0.0f, -16.0f, 15.9899997711181640625f));
-  float4 v_3 = float4(x_40[0u], x_40[1u], x_40[2u], x_40[3u]);
-  float4 v_4 = float4(x_47[0u], x_47[1u], x_47[2u], x_47[3u]);
-  return float4x4(v_3, v_4, float4(x_54[0u], x_54[1u], x_54[2u], x_54[3u]), (0.0f).xxxx);
+  float4 v_3 = float4(x_40.x, x_40.y, x_40.z, x_40.w);
+  float4 v_4 = float4(x_47.x, x_47.y, x_47.z, x_47.w);
+  return float4x4(v_3, v_4, float4(x_54.x, x_54.y, x_54.z, x_54.w), (0.0f).xxxx);
 }
 
 void main_1() {
@@ -78,7 +78,7 @@
   float2 x_86 = tUV;
   tileUV = frac(x_86);
   float x_91 = tileUV.y;
-  tileUV[1u] = (1.0f - x_91);
+  tileUV.y = (1.0f - x_91);
   float2 x_95 = tUV;
   tileID = floor(x_95);
   float2 x_101 = asfloat(x_20[6u].xy);
@@ -102,7 +102,7 @@
           float2 x_150 = tileID;
           float2 x_154 = asfloat(x_20[5u].zw);
           float4 x_156 = tileMapsTexture1.SampleBias(tileMapsSampler, ((x_150 + (0.5f).xx) / x_154), clamp(0.0f, -16.0f, 15.9899997711181640625f));
-          frameID_1 = x_156[0u];
+          frameID_1 = x_156.x;
           break;
         }
         case int(0):
@@ -110,7 +110,7 @@
           float2 x_136 = tileID;
           float2 x_140 = asfloat(x_20[5u].zw);
           float4 x_142 = tileMapsTexture0.SampleBias(tileMapsSampler, ((x_136 + (0.5f).xx) / x_140), clamp(0.0f, -16.0f, 15.9899997711181640625f));
-          frameID_1 = x_142[0u];
+          frameID_1 = x_142.x;
           break;
         }
         default:
@@ -164,18 +164,18 @@
       frameData = x_225;
       float4 x_228 = frameData[int(0)];
       float2 x_231 = asfloat(x_20[6u].xy);
-      frameSize = (float2(x_228[3u], x_228[2u]) / x_231);
+      frameSize = (float2(x_228.w, x_228.z) / x_231);
       float4 x_235 = frameData[int(0)];
       float2 x_237 = sheetUnits;
-      offset_1 = (float2(x_235[0u], x_235[1u]) * x_237);
+      offset_1 = (float2(x_235.x, x_235.y) * x_237);
       float4 x_241 = frameData[int(2)];
       float4 x_244 = frameData[int(0)];
-      float2 v_8 = float2(x_241[0u], x_241[1u]);
-      ratio = (v_8 / float2(x_244[3u], x_244[2u]));
+      float2 v_8 = float2(x_241.x, x_241.y);
+      ratio = (v_8 / float2(x_244.w, x_244.z));
       float x_248 = frameData[int(2)].z;
       if ((x_248 == 1.0f)) {
         float2 x_252 = tileUV;
-        tileUV = float2(x_252[1u], x_252[0u]);
+        tileUV = float2(x_252.y, x_252.x);
       }
       int x_254 = i;
       if ((x_254 == int(0))) {
@@ -196,12 +196,12 @@
         float4 x_290 = color;
         float4 x_292 = nc;
         float x_295 = nc.w;
-        float3 v_9 = float3(x_290[0u], x_290[1u], x_290[2u]);
-        float3 v_10 = float3(x_292[0u], x_292[1u], x_292[2u]);
+        float3 v_9 = float3(x_290.x, x_290.y, x_290.z);
+        float3 v_10 = float3(x_292.x, x_292.y, x_292.z);
         mixed = lerp(v_9, v_10, float3(x_295, x_295, x_295));
         float3 x_298 = mixed;
         float x_299 = alpha;
-        color = float4(x_298[0u], x_298[1u], x_298[2u], x_299);
+        color = float4(x_298.x, x_298.y, x_298.z, x_299);
       }
       {
         int x_304 = i;
@@ -212,9 +212,9 @@
   }
   float3 x_310 = asfloat(x_20[7u].xyz);
   float4 x_311 = color;
-  float3 x_313 = (float3(x_311[0u], x_311[1u], x_311[2u]) * x_310);
+  float3 x_313 = (float3(x_311.x, x_311.y, x_311.z) * x_310);
   float4 x_314 = color;
-  color = float4(x_313[0u], x_313[1u], x_313[2u], x_314[3u]);
+  color = float4(x_313.x, x_313.y, x_313.z, x_314.w);
   float4 x_318 = color;
   glFragColor = x_318;
 }
diff --git a/test/tint/bug/tint/948.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/948.wgsl.expected.ir.fxc.hlsl
index 08c16eb..7cbc04c 100644
--- a/test/tint/bug/tint/948.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/948.wgsl.expected.ir.fxc.hlsl
@@ -50,9 +50,9 @@
   float x_51 = fX;
   float2 v_2 = float2(x_51, 0.5f);
   float4 x_54 = frameMapTexture.SampleBias(frameMapSampler, v_2, clamp(0.0f, -16.0f, 15.9899997711181640625f));
-  float4 v_3 = float4(x_40[0u], x_40[1u], x_40[2u], x_40[3u]);
-  float4 v_4 = float4(x_47[0u], x_47[1u], x_47[2u], x_47[3u]);
-  return float4x4(v_3, v_4, float4(x_54[0u], x_54[1u], x_54[2u], x_54[3u]), (0.0f).xxxx);
+  float4 v_3 = float4(x_40.x, x_40.y, x_40.z, x_40.w);
+  float4 v_4 = float4(x_47.x, x_47.y, x_47.z, x_47.w);
+  return float4x4(v_3, v_4, float4(x_54.x, x_54.y, x_54.z, x_54.w), (0.0f).xxxx);
 }
 
 void main_1() {
@@ -78,7 +78,7 @@
   float2 x_86 = tUV;
   tileUV = frac(x_86);
   float x_91 = tileUV.y;
-  tileUV[1u] = (1.0f - x_91);
+  tileUV.y = (1.0f - x_91);
   float2 x_95 = tUV;
   tileID = floor(x_95);
   float2 x_101 = asfloat(x_20[6u].xy);
@@ -102,7 +102,7 @@
           float2 x_150 = tileID;
           float2 x_154 = asfloat(x_20[5u].zw);
           float4 x_156 = tileMapsTexture1.SampleBias(tileMapsSampler, ((x_150 + (0.5f).xx) / x_154), clamp(0.0f, -16.0f, 15.9899997711181640625f));
-          frameID_1 = x_156[0u];
+          frameID_1 = x_156.x;
           break;
         }
         case int(0):
@@ -110,7 +110,7 @@
           float2 x_136 = tileID;
           float2 x_140 = asfloat(x_20[5u].zw);
           float4 x_142 = tileMapsTexture0.SampleBias(tileMapsSampler, ((x_136 + (0.5f).xx) / x_140), clamp(0.0f, -16.0f, 15.9899997711181640625f));
-          frameID_1 = x_142[0u];
+          frameID_1 = x_142.x;
           break;
         }
         default:
@@ -164,18 +164,18 @@
       frameData = x_225;
       float4 x_228 = frameData[int(0)];
       float2 x_231 = asfloat(x_20[6u].xy);
-      frameSize = (float2(x_228[3u], x_228[2u]) / x_231);
+      frameSize = (float2(x_228.w, x_228.z) / x_231);
       float4 x_235 = frameData[int(0)];
       float2 x_237 = sheetUnits;
-      offset_1 = (float2(x_235[0u], x_235[1u]) * x_237);
+      offset_1 = (float2(x_235.x, x_235.y) * x_237);
       float4 x_241 = frameData[int(2)];
       float4 x_244 = frameData[int(0)];
-      float2 v_8 = float2(x_241[0u], x_241[1u]);
-      ratio = (v_8 / float2(x_244[3u], x_244[2u]));
+      float2 v_8 = float2(x_241.x, x_241.y);
+      ratio = (v_8 / float2(x_244.w, x_244.z));
       float x_248 = frameData[int(2)].z;
       if ((x_248 == 1.0f)) {
         float2 x_252 = tileUV;
-        tileUV = float2(x_252[1u], x_252[0u]);
+        tileUV = float2(x_252.y, x_252.x);
       }
       int x_254 = i;
       if ((x_254 == int(0))) {
@@ -196,12 +196,12 @@
         float4 x_290 = color;
         float4 x_292 = nc;
         float x_295 = nc.w;
-        float3 v_9 = float3(x_290[0u], x_290[1u], x_290[2u]);
-        float3 v_10 = float3(x_292[0u], x_292[1u], x_292[2u]);
+        float3 v_9 = float3(x_290.x, x_290.y, x_290.z);
+        float3 v_10 = float3(x_292.x, x_292.y, x_292.z);
         mixed = lerp(v_9, v_10, float3(x_295, x_295, x_295));
         float3 x_298 = mixed;
         float x_299 = alpha;
-        color = float4(x_298[0u], x_298[1u], x_298[2u], x_299);
+        color = float4(x_298.x, x_298.y, x_298.z, x_299);
       }
       {
         int x_304 = i;
@@ -212,9 +212,9 @@
   }
   float3 x_310 = asfloat(x_20[7u].xyz);
   float4 x_311 = color;
-  float3 x_313 = (float3(x_311[0u], x_311[1u], x_311[2u]) * x_310);
+  float3 x_313 = (float3(x_311.x, x_311.y, x_311.z) * x_310);
   float4 x_314 = color;
-  color = float4(x_313[0u], x_313[1u], x_313[2u], x_314[3u]);
+  color = float4(x_313.x, x_313.y, x_313.z, x_314.w);
   float4 x_318 = color;
   glFragColor = x_318;
 }
diff --git a/test/tint/bug/tint/949.wgsl.expected.ir.dxc.hlsl b/test/tint/bug/tint/949.wgsl.expected.ir.dxc.hlsl
index d048e6d..d6bfb00 100644
--- a/test/tint/bug/tint/949.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/bug/tint/949.wgsl.expected.ir.dxc.hlsl
@@ -93,9 +93,9 @@
   float x_193 = invmax;
   float3 x_194 = (x_192 * x_193);
   float3 x_195 = normal_1;
-  float3 v_1 = float3(x_191[0u], x_191[1u], x_191[2u]);
-  float3 v_2 = float3(x_194[0u], x_194[1u], x_194[2u]);
-  return float3x3(v_1, v_2, float3(x_195[0u], x_195[1u], x_195[2u]));
+  float3 v_1 = float3(x_191.x, x_191.y, x_191.z);
+  float3 v_2 = float3(x_194.x, x_194.y, x_194.z);
+  return float3x3(v_1, v_2, float3(x_195.x, x_195.y, x_195.z));
 }
 
 float3x3 transposeMat3_mf33_(inout float3x3 inMatrix) {
@@ -121,9 +121,9 @@
   float x_91 = i1.z;
   float x_93 = i2.z;
   float3 x_94 = float3(x_89, x_91, x_93);
-  float3 v_3 = float3(x_78[0u], x_78[1u], x_78[2u]);
-  float3 v_4 = float3(x_86[0u], x_86[1u], x_86[2u]);
-  outMatrix = float3x3(v_3, v_4, float3(x_94[0u], x_94[1u], x_94[2u]));
+  float3 v_3 = float3(x_78.x, x_78.y, x_78.z);
+  float3 v_4 = float3(x_86.x, x_86.y, x_86.z);
+  outMatrix = float3x3(v_3, v_4, float3(x_94.x, x_94.y, x_94.z));
   float3x3 x_110 = outMatrix;
   return x_110;
 }
@@ -155,14 +155,14 @@
   float specComp = 0.0f;
   float3 x_212 = vNormal;
   float4 x_213 = lightData;
-  ndl = ((dot(x_212, float3(x_213[0u], x_213[1u], x_213[2u])) * 0.5f) + 0.5f);
+  ndl = ((dot(x_212, float3(x_213.x, x_213.y, x_213.z)) * 0.5f) + 0.5f);
   float3 x_220 = groundColor;
   float3 x_221 = diffuseColor;
   float x_222 = ndl;
   result.diffuse = lerp(x_220, x_221, float3(x_222, x_222, x_222));
   float3 x_227 = viewDirectionW;
   float4 x_228 = lightData;
-  angleW = normalize((x_227 + float3(x_228[0u], x_228[1u], x_228[2u])));
+  angleW = normalize((x_227 + float3(x_228.x, x_228.y, x_228.z)));
   float3 x_233 = vNormal;
   float3 x_234 = angleW;
   specComp = max(0.0f, dot(x_233, x_234));
@@ -237,10 +237,10 @@
   tempTextureRead = x_262;
   float4 x_264 = tempTextureRead;
   float x_273 = asfloat(x_269[10u].x);
-  rgb = (float3(x_264[0u], x_264[1u], x_264[2u]) * x_273);
+  rgb = (float3(x_264.x, x_264.y, x_264.z) * x_273);
   float3 x_279 = asfloat(x_269[9u].xyz);
   float4 x_282 = v_output1;
-  output5 = normalize((x_279 - float3(x_282[0u], x_282[1u], x_282[2u])));
+  output5 = normalize((x_279 - float3(x_282.x, x_282.y, x_282.z)));
   output4 = (0.0f).xxxx;
   uvOffset = (0.0f).xx;
   float x_292 = asfloat(x_269[8u].x);
@@ -257,9 +257,9 @@
   TBNUV = x_307;
   float4 x_310 = v_output2;
   float x_312 = normalScale;
-  param_3 = (float3(x_310[0u], x_310[1u], x_310[2u]) * x_312);
+  param_3 = (float3(x_310.x, x_310.y, x_310.z) * x_312);
   float4 x_317 = v_output1;
-  param_4 = float3(x_317[0u], x_317[1u], x_317[2u]);
+  param_4 = float3(x_317.x, x_317.y, x_317.z);
   float2 x_320 = TBNUV;
   param_5 = x_320;
   float2 x_324 = asfloat(x_269[10u].zw);
@@ -275,15 +275,15 @@
   float3 x_334 = mul(-(x_332), x_331);
   float3x3 x_337 = invTBN;
   float3 x_338 = output5;
-  float v_5 = length(float2(x_334[0u], x_334[1u]));
-  parallaxLimit = (v_5 / mul(-(x_338), x_337)[2u]);
+  float v_5 = length(float2(x_334.x, x_334.y));
+  parallaxLimit = (v_5 / mul(-(x_338), x_337).z);
   float x_345 = asfloat(x_269[9u].w);
   float x_346 = parallaxLimit;
   parallaxLimit = (x_346 * x_345);
   float3x3 x_349 = invTBN;
   float3 x_350 = output5;
   float3 x_352 = mul(-(x_350), x_349);
-  vOffsetDir = normalize(float2(x_352[0u], x_352[1u]));
+  vOffsetDir = normalize(float2(x_352.x, x_352.y));
   float2 x_356 = vOffsetDir;
   float x_357 = parallaxLimit;
   vMaxOffset = (x_356 * x_357);
@@ -292,7 +292,7 @@
   float3x3 x_365 = invTBN;
   float4 x_366 = v_output2;
   float3 v_6 = mul(-(x_362), x_361);
-  numSamples = (15.0f + (dot(v_6, mul(float3(x_366[0u], x_366[1u], x_366[2u]), x_365)) * -11.0f));
+  numSamples = (15.0f + (dot(v_6, mul(float3(x_366.x, x_366.y, x_366.z), x_365)) * -11.0f));
   float x_374 = numSamples;
   stepSize = (1.0f / x_374);
   currRayHeight = 1.0f;
@@ -311,7 +311,7 @@
       float2 x_394 = v_uv;
       float2 x_395 = vCurrOffset;
       float4 x_397 = (0.0f).xxxx;
-      currSampledHeight = x_397[3u];
+      currSampledHeight = x_397.w;
       float x_400 = currSampledHeight;
       float x_401 = currRayHeight;
       if ((x_400 > x_401)) {
@@ -362,11 +362,11 @@
   float x_454 = asfloat(x_269[8u].x);
   float3x3 x_457 = TBN;
   param_8 = x_457;
-  param_9 = float3(x_452[0u], x_452[1u], x_452[2u]);
+  param_9 = float3(x_452.x, x_452.y, x_452.z);
   param_10 = (1.0f / x_454);
   float3 x_461 = perturbNormal_mf33_vf3_f1_(param_8, param_9, param_10);
   float4 x_462 = output4;
-  output4 = float4(x_461[0u], x_461[1u], x_461[2u], x_462[3u]);
+  output4 = float4(x_461.x, x_461.y, x_461.z, x_462.w);
   float2 x_465 = v_uv;
   float2 x_466 = uvOffset;
   output6 = (x_465 + x_466);
@@ -374,17 +374,17 @@
   float4 x_475 = TextureSampler1Texture.Sample(TextureSampler1Sampler, x_474);
   tempTextureRead1 = x_475;
   float4 x_477 = tempTextureRead1;
-  rgb1 = float3(x_477[0u], x_477[1u], x_477[2u]);
+  rgb1 = float3(x_477.x, x_477.y, x_477.z);
   float3 x_481 = asfloat(x_269[9u].xyz);
   float4 x_482 = v_output1;
-  viewDirectionW_1 = normalize((x_481 - float3(x_482[0u], x_482[1u], x_482[2u])));
+  viewDirectionW_1 = normalize((x_481 - float3(x_482.x, x_482.y, x_482.z)));
   shadow = 1.0f;
   float x_488 = u_Float;
   glossiness_1 = (1.0f * x_488);
   diffuseBase = (0.0f).xxx;
   specularBase = (0.0f).xxx;
   float4 x_494 = output4;
-  normalW = float3(x_494[0u], x_494[1u], x_494[2u]);
+  normalW = float3(x_494.x, x_494.y, x_494.z);
   float3 x_501 = viewDirectionW_1;
   param_11 = x_501;
   float3 x_503 = normalW;
@@ -392,9 +392,9 @@
   float4 x_507 = asfloat(light0[0u]);
   param_13 = x_507;
   float4 x_510 = asfloat(light0[1u]);
-  param_14 = float3(x_510[0u], x_510[1u], x_510[2u]);
+  param_14 = float3(x_510.x, x_510.y, x_510.z);
   float4 x_514 = asfloat(light0[2u]);
-  param_15 = float3(x_514[0u], x_514[1u], x_514[2u]);
+  param_15 = float3(x_514.x, x_514.y, x_514.z);
   float3 x_518 = asfloat(light0[3u].xyz);
   param_16 = x_518;
   float x_520 = glossiness_1;
@@ -420,7 +420,7 @@
   float3 x_544 = specularOutput;
   output3 = (x_543 + x_544);
   float3 x_548 = output3;
-  glFragColor = float4(x_548[0u], x_548[1u], x_548[2u], 1.0f);
+  glFragColor = float4(x_548.x, x_548.y, x_548.z, 1.0f);
 }
 
 main_out main_inner(float2 vMainuv_param, float4 v_output1_param, bool gl_FrontFacing_param, float2 v_uv_param, float4 v_output2_param) {
diff --git a/test/tint/bug/tint/949.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/949.wgsl.expected.ir.fxc.hlsl
index d048e6d..d6bfb00 100644
--- a/test/tint/bug/tint/949.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/949.wgsl.expected.ir.fxc.hlsl
@@ -93,9 +93,9 @@
   float x_193 = invmax;
   float3 x_194 = (x_192 * x_193);
   float3 x_195 = normal_1;
-  float3 v_1 = float3(x_191[0u], x_191[1u], x_191[2u]);
-  float3 v_2 = float3(x_194[0u], x_194[1u], x_194[2u]);
-  return float3x3(v_1, v_2, float3(x_195[0u], x_195[1u], x_195[2u]));
+  float3 v_1 = float3(x_191.x, x_191.y, x_191.z);
+  float3 v_2 = float3(x_194.x, x_194.y, x_194.z);
+  return float3x3(v_1, v_2, float3(x_195.x, x_195.y, x_195.z));
 }
 
 float3x3 transposeMat3_mf33_(inout float3x3 inMatrix) {
@@ -121,9 +121,9 @@
   float x_91 = i1.z;
   float x_93 = i2.z;
   float3 x_94 = float3(x_89, x_91, x_93);
-  float3 v_3 = float3(x_78[0u], x_78[1u], x_78[2u]);
-  float3 v_4 = float3(x_86[0u], x_86[1u], x_86[2u]);
-  outMatrix = float3x3(v_3, v_4, float3(x_94[0u], x_94[1u], x_94[2u]));
+  float3 v_3 = float3(x_78.x, x_78.y, x_78.z);
+  float3 v_4 = float3(x_86.x, x_86.y, x_86.z);
+  outMatrix = float3x3(v_3, v_4, float3(x_94.x, x_94.y, x_94.z));
   float3x3 x_110 = outMatrix;
   return x_110;
 }
@@ -155,14 +155,14 @@
   float specComp = 0.0f;
   float3 x_212 = vNormal;
   float4 x_213 = lightData;
-  ndl = ((dot(x_212, float3(x_213[0u], x_213[1u], x_213[2u])) * 0.5f) + 0.5f);
+  ndl = ((dot(x_212, float3(x_213.x, x_213.y, x_213.z)) * 0.5f) + 0.5f);
   float3 x_220 = groundColor;
   float3 x_221 = diffuseColor;
   float x_222 = ndl;
   result.diffuse = lerp(x_220, x_221, float3(x_222, x_222, x_222));
   float3 x_227 = viewDirectionW;
   float4 x_228 = lightData;
-  angleW = normalize((x_227 + float3(x_228[0u], x_228[1u], x_228[2u])));
+  angleW = normalize((x_227 + float3(x_228.x, x_228.y, x_228.z)));
   float3 x_233 = vNormal;
   float3 x_234 = angleW;
   specComp = max(0.0f, dot(x_233, x_234));
@@ -237,10 +237,10 @@
   tempTextureRead = x_262;
   float4 x_264 = tempTextureRead;
   float x_273 = asfloat(x_269[10u].x);
-  rgb = (float3(x_264[0u], x_264[1u], x_264[2u]) * x_273);
+  rgb = (float3(x_264.x, x_264.y, x_264.z) * x_273);
   float3 x_279 = asfloat(x_269[9u].xyz);
   float4 x_282 = v_output1;
-  output5 = normalize((x_279 - float3(x_282[0u], x_282[1u], x_282[2u])));
+  output5 = normalize((x_279 - float3(x_282.x, x_282.y, x_282.z)));
   output4 = (0.0f).xxxx;
   uvOffset = (0.0f).xx;
   float x_292 = asfloat(x_269[8u].x);
@@ -257,9 +257,9 @@
   TBNUV = x_307;
   float4 x_310 = v_output2;
   float x_312 = normalScale;
-  param_3 = (float3(x_310[0u], x_310[1u], x_310[2u]) * x_312);
+  param_3 = (float3(x_310.x, x_310.y, x_310.z) * x_312);
   float4 x_317 = v_output1;
-  param_4 = float3(x_317[0u], x_317[1u], x_317[2u]);
+  param_4 = float3(x_317.x, x_317.y, x_317.z);
   float2 x_320 = TBNUV;
   param_5 = x_320;
   float2 x_324 = asfloat(x_269[10u].zw);
@@ -275,15 +275,15 @@
   float3 x_334 = mul(-(x_332), x_331);
   float3x3 x_337 = invTBN;
   float3 x_338 = output5;
-  float v_5 = length(float2(x_334[0u], x_334[1u]));
-  parallaxLimit = (v_5 / mul(-(x_338), x_337)[2u]);
+  float v_5 = length(float2(x_334.x, x_334.y));
+  parallaxLimit = (v_5 / mul(-(x_338), x_337).z);
   float x_345 = asfloat(x_269[9u].w);
   float x_346 = parallaxLimit;
   parallaxLimit = (x_346 * x_345);
   float3x3 x_349 = invTBN;
   float3 x_350 = output5;
   float3 x_352 = mul(-(x_350), x_349);
-  vOffsetDir = normalize(float2(x_352[0u], x_352[1u]));
+  vOffsetDir = normalize(float2(x_352.x, x_352.y));
   float2 x_356 = vOffsetDir;
   float x_357 = parallaxLimit;
   vMaxOffset = (x_356 * x_357);
@@ -292,7 +292,7 @@
   float3x3 x_365 = invTBN;
   float4 x_366 = v_output2;
   float3 v_6 = mul(-(x_362), x_361);
-  numSamples = (15.0f + (dot(v_6, mul(float3(x_366[0u], x_366[1u], x_366[2u]), x_365)) * -11.0f));
+  numSamples = (15.0f + (dot(v_6, mul(float3(x_366.x, x_366.y, x_366.z), x_365)) * -11.0f));
   float x_374 = numSamples;
   stepSize = (1.0f / x_374);
   currRayHeight = 1.0f;
@@ -311,7 +311,7 @@
       float2 x_394 = v_uv;
       float2 x_395 = vCurrOffset;
       float4 x_397 = (0.0f).xxxx;
-      currSampledHeight = x_397[3u];
+      currSampledHeight = x_397.w;
       float x_400 = currSampledHeight;
       float x_401 = currRayHeight;
       if ((x_400 > x_401)) {
@@ -362,11 +362,11 @@
   float x_454 = asfloat(x_269[8u].x);
   float3x3 x_457 = TBN;
   param_8 = x_457;
-  param_9 = float3(x_452[0u], x_452[1u], x_452[2u]);
+  param_9 = float3(x_452.x, x_452.y, x_452.z);
   param_10 = (1.0f / x_454);
   float3 x_461 = perturbNormal_mf33_vf3_f1_(param_8, param_9, param_10);
   float4 x_462 = output4;
-  output4 = float4(x_461[0u], x_461[1u], x_461[2u], x_462[3u]);
+  output4 = float4(x_461.x, x_461.y, x_461.z, x_462.w);
   float2 x_465 = v_uv;
   float2 x_466 = uvOffset;
   output6 = (x_465 + x_466);
@@ -374,17 +374,17 @@
   float4 x_475 = TextureSampler1Texture.Sample(TextureSampler1Sampler, x_474);
   tempTextureRead1 = x_475;
   float4 x_477 = tempTextureRead1;
-  rgb1 = float3(x_477[0u], x_477[1u], x_477[2u]);
+  rgb1 = float3(x_477.x, x_477.y, x_477.z);
   float3 x_481 = asfloat(x_269[9u].xyz);
   float4 x_482 = v_output1;
-  viewDirectionW_1 = normalize((x_481 - float3(x_482[0u], x_482[1u], x_482[2u])));
+  viewDirectionW_1 = normalize((x_481 - float3(x_482.x, x_482.y, x_482.z)));
   shadow = 1.0f;
   float x_488 = u_Float;
   glossiness_1 = (1.0f * x_488);
   diffuseBase = (0.0f).xxx;
   specularBase = (0.0f).xxx;
   float4 x_494 = output4;
-  normalW = float3(x_494[0u], x_494[1u], x_494[2u]);
+  normalW = float3(x_494.x, x_494.y, x_494.z);
   float3 x_501 = viewDirectionW_1;
   param_11 = x_501;
   float3 x_503 = normalW;
@@ -392,9 +392,9 @@
   float4 x_507 = asfloat(light0[0u]);
   param_13 = x_507;
   float4 x_510 = asfloat(light0[1u]);
-  param_14 = float3(x_510[0u], x_510[1u], x_510[2u]);
+  param_14 = float3(x_510.x, x_510.y, x_510.z);
   float4 x_514 = asfloat(light0[2u]);
-  param_15 = float3(x_514[0u], x_514[1u], x_514[2u]);
+  param_15 = float3(x_514.x, x_514.y, x_514.z);
   float3 x_518 = asfloat(light0[3u].xyz);
   param_16 = x_518;
   float x_520 = glossiness_1;
@@ -420,7 +420,7 @@
   float3 x_544 = specularOutput;
   output3 = (x_543 + x_544);
   float3 x_548 = output3;
-  glFragColor = float4(x_548[0u], x_548[1u], x_548[2u], 1.0f);
+  glFragColor = float4(x_548.x, x_548.y, x_548.z, 1.0f);
 }
 
 main_out main_inner(float2 vMainuv_param, float4 v_output1_param, bool gl_FrontFacing_param, float2 v_uv_param, float4 v_output2_param) {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl
index 6095b8f..73d534a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_00229f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl
index 6095b8f..73d534a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_00229f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl
index cdca621..dbb87f9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_00348c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl
index cdca621..dbb87f9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_00348c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl
index 25e7125..0128584 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureDimensions_022903() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl
index 25e7125..0128584 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureDimensions_022903() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl
index a2c3154..f25d5cd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0276ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl
index a2c3154..f25d5cd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0276ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl
index b37efd3..3b2f85b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_029589() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl
index b37efd3..3b2f85b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_029589() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl
index 37817bf..41f6b29 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_03f81e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl
index 37817bf..41f6b29 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_03f81e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl
index 6fb00e0..01985ad 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_07f1ba() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl
index 6fb00e0..01985ad 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_07f1ba() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl
index 2aa6bb5..06cfb15 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_088918() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl
index 2aa6bb5..06cfb15 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_088918() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
index 78e2023..199b9d99 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_0890c6() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
index 78e2023..199b9d99 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_0890c6() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl
index d80cfc5..d0a387b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_08e371() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl
index d80cfc5..d0a387b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_08e371() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl
index 0e2dcd0..d45f8c4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0973c9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl
index 0e2dcd0..d45f8c4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0973c9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl
index 4c13e8e..5beabed 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0baa0d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl
index 4c13e8e..5beabed 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0baa0d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl
index ca4e556..77245f9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_0d4a7c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl
index ca4e556..77245f9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_0d4a7c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl
index 8f56acd..2ede2e1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0de70c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl
index 8f56acd..2ede2e1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0de70c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl
index 2d6fc75..a5052bd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_0ff9a4() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl
index 2d6fc75..a5052bd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_0ff9a4() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl
index 4a660c2..4e632ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_135176() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl
index 4a660c2..4e632ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_135176() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl
index 017fa32..9226b85 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_13f8db() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl
index 017fa32..9226b85 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_13f8db() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl
index 7c0396a..014d487 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1417dd() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl
index 7c0396a..014d487 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1417dd() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl
index a9a72d4..096914c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_15aa17() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl
index a9a72d4..096914c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_15aa17() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl
index 1e899f4..c145502 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_15b577() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl
index 1e899f4..c145502 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_15b577() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl
index 4f59075..6783082 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18160d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl
index 4f59075..6783082 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18160d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl
index 63589ae..d1d79ca 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18f19f() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl
index 63589ae..d1d79ca 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18f19f() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl
index 766770c..2e10381 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1a2be7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl
index 766770c..2e10381 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1a2be7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl
index a206e2b..214502b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1b720f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl
index a206e2b..214502b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1b720f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
index b8ef54f..ba57c98 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1bc428() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
index b8ef54f..ba57c98 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1bc428() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl
index b3cea07..a449940 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_1bd78c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl
index b3cea07..a449940 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_1bd78c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl
index a632a46..6409b4a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1e4024() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl
index a632a46..6409b4a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1e4024() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl
index afcdd07..03e0fb6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_20eaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl
index afcdd07..03e0fb6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_20eaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl
index c96e386..14ceec2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_224113() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl
index c96e386..14ceec2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_224113() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl
index 0c2968d..bfea15d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_22b5b6() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl
index 0c2968d..bfea15d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_22b5b6() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl
index 7e3a7dd..af658aa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_24db07() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl
index 7e3a7dd..af658aa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_24db07() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl
index 14f18ae..cb0f536 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_25d284() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl
index 14f18ae..cb0f536 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_25d284() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl
index 8e3df27..3abe6db 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2674d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl
index 8e3df27..3abe6db 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2674d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl
index 546f775..e768d2f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_268ddb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl
index 546f775..e768d2f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_268ddb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl
index ced44ee..db7218f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_282978() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl
index ced44ee..db7218f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_282978() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl
index 84e3d8e..49bccd2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2a58b7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl
index 84e3d8e..49bccd2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2a58b7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl
index f70af96..6856397 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_2e443d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl
index f70af96..6856397 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_2e443d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl
index 2381475..8674b7e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_2fd2a4() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl
index 2381475..8674b7e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_2fd2a4() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl
index 6834f5d..ffa8e01 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_2ff32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl
index 6834f5d..ffa8e01 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_2ff32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl
index 0a1f39f..a2af4a6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_305dd5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl
index 0a1f39f..a2af4a6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_305dd5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl
index 8a06b3f..96e62e7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31799c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl
index 8a06b3f..96e62e7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31799c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl
index 934473c..ec089c1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31d00d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl
index 934473c..ec089c1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31d00d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl
index db08c89..899dc03 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_325338() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl
index db08c89..899dc03 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_325338() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl
index 59e099b..74a21d1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_346fee() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl
index 59e099b..74a21d1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_346fee() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl
index fcf5bd7..4a32970 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35a7e5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl
index fcf5bd7..4a32970 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35a7e5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl
index 6e251f9..d5c190c5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35ee69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl
index 6e251f9..d5c190c5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35ee69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl
index f8a095d..465efbc 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_36eeb7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl
index f8a095d..465efbc 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_36eeb7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl
index f691a73..e8e2e19 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_378a65() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl
index f691a73..e8e2e19 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_378a65() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl
index 759a741..65596ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_382b16() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl
index 759a741..65596ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_382b16() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl
index 84ebd59..0fada5e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3834f8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl
index 84ebd59..0fada5e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3834f8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl
index 2af52f17..64b0c03 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_38c9ca() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl
index 2af52f17..64b0c03 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_38c9ca() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl
index 8e1f277..9d54dac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3963d0() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl
index 8e1f277..9d54dac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3963d0() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl
index b60638e..787d7a0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_397dab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl
index b60638e..787d7a0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_397dab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl
index 56fb43c..2ec9415 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_3a5bb1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl
index 56fb43c..2ec9415 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_3a5bb1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl
index 6ba7780..c150a35 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3a7b69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl
index 6ba7780..c150a35 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3a7b69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl
index 7eb2678..8ac1eca 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_3b38f6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl
index 7eb2678..8ac1eca 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_3b38f6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl
index b5a2c6f..5dd6942 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3baab5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl
index b5a2c6f..5dd6942 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3baab5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl
index 4359b2f..988f925 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3bf12a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl
index 4359b2f..988f925 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3bf12a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl
index 549fa9e..dc4ad8d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3c66f0() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl
index 549fa9e..dc4ad8d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3c66f0() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl
index 37fcf7f..c143034 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3f3474() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl
index 37fcf7f..c143034 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3f3474() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl
index d789291..24ed7da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3fc3dc() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl
index d789291..24ed7da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3fc3dc() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl
index 56c6320..ed2c404 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3ff0a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl
index 56c6320..ed2c404 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3ff0a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl
index e01e975..81c3864 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_40c671() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl
index e01e975..81c3864 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_40c671() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl
index 0df09a0..64db6aa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_40da20() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl
index 0df09a0..64db6aa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_40da20() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl
index 593cc12..18d915a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_40ecf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl
index 593cc12..18d915a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_40ecf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl
index 7c07958..a8986e2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_41545f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl
index 7c07958..a8986e2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_41545f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl
index b4ff971..5a3c6b2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_423519() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl
index b4ff971..5a3c6b2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_423519() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl
index 59baea6..6e4bb95 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_427f92() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl
index 59baea6..6e4bb95 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_427f92() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl
index 50a588d..b5c5583 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_439651() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl
index 50a588d..b5c5583 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_439651() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl
index 5de6d6f..9974faf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_445376() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl
index 5de6d6f..9974faf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_445376() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl
index 23d171b..070ffa2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_44b358() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl
index 23d171b..070ffa2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_44b358() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl
index f54010c..0bd2937 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_452fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl
index f54010c..0bd2937 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_452fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl
index 0f6b226..d913877 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_46f0fc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl
index 0f6b226..d913877 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_46f0fc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl
index d5c2a72..a823146 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4716a4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl
index d5c2a72..a823146 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4716a4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl
index 370353b..65e125f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_475c10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl
index 370353b..65e125f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_475c10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl
index 61d0138..fd18b02 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_49a067() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl
index 61d0138..fd18b02 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_49a067() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl
index f0cd024..b22bb7c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_4acec7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl
index f0cd024..b22bb7c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_4acec7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl
index 4c8b444..56ca1b0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4b26ef() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl
index 4c8b444..56ca1b0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4b26ef() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl
index 3707879..a87ba82 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4be71b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl
index 3707879..a87ba82 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4be71b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl
index 71e5602..76905f0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4d1f71() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl
index 71e5602..76905f0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4d1f71() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl
index ca1a07e..275a7df 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4d27b3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl
index ca1a07e..275a7df 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4d27b3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl
index 6d87a7c..e6c5878 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4df14c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl
index 6d87a7c..e6c5878 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4df14c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl
index d6573ee..65f4a27 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_528c0e() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl
index d6573ee..65f4a27 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_528c0e() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl
index ae1ea9c..0fcd588 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_52cf60() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl
index ae1ea9c..0fcd588 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_52cf60() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl
index bdb670d..3348a9c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_534ef8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl
index bdb670d..3348a9c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_534ef8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl
index 179dd6a..5468656 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_55fdeb() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl
index 179dd6a..5468656 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_55fdeb() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl
index dfc7cc6..283c69a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_578e75() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl
index dfc7cc6..283c69a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_578e75() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl
index 5b06b67..65c5279 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_579eee() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl
index 5b06b67..65c5279 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_579eee() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl
index f5e1080..f7466ae 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_591981() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl
index f5e1080..f7466ae 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_591981() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl
index 3e95111..fdcc5a6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_599ab5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl
index 3e95111..fdcc5a6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_599ab5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl
index 45c995d..c20fbce 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_5b4b10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl
index 45c995d..c20fbce 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_5b4b10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl
index ca336c9..91a76ab 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_609d34() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl
index ca336c9..91a76ab 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_609d34() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl
index 5982595..15c2378 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_617dc8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl
index 5982595..15c2378 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_617dc8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl
index 8e627a6..3df7dcf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62cb5a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl
index 8e627a6..3df7dcf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62cb5a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl
index f0205ba..35d229d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62e7ae() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl
index f0205ba..35d229d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62e7ae() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl
index 714de33..ab82001b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_64dc74() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl
index 714de33..ab82001b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_64dc74() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl
index baaf8a4..8f559c2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_674058() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl
index baaf8a4..8f559c2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_674058() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl
index 8d07e68..6d63616 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dae40() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl
index 8d07e68..6d63616 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dae40() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl
index 146f7b5..b45ae1d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dbef4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl
index 146f7b5..b45ae1d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dbef4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
index 8b7bbdc..223aaba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6e6c7a() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
index 8b7bbdc..223aaba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6e6c7a() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl
index 3e057c7..c25d8c9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_6e72c5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl
index 3e057c7..c25d8c9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_6e72c5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl
index fca65bd..7c44ceb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_6f1b5d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl
index fca65bd..7c44ceb 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_6f1b5d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl
index eafc1e5..888bac0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_70dd33() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl
index eafc1e5..888bac0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_70dd33() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl
index b82f8bf..5cb79ac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_715917() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl
index b82f8bf..5cb79ac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_715917() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl
index 6a50304..161e8da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7327fa() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl
index 6a50304..161e8da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7327fa() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
index 8f0b842..17c4be2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_756031() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
index 8f0b842..17c4be2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_756031() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl
index 33f39e7..8da11b3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_756304() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl
index 33f39e7..8da11b3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_756304() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl
index c831c94..9274285 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_790e57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl
index c831c94..9274285 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_790e57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl
index 2eb6b69..9cb8292 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_795fbb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl
index 2eb6b69..9cb8292 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_795fbb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl
index bd793f4..f3144f4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_79d168() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl
index bd793f4..f3144f4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_79d168() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl
index 818de99..338dcb4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_7a3890() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl
index 818de99..338dcb4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_7a3890() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl
index b879760..9cea906 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7a9e30() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl
index b879760..9cea906 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7a9e30() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl
index ab81e24..11e58d3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_7c7c64() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl
index ab81e24..11e58d3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_7c7c64() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl
index 848ef78..f38d22f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_7ea4b5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl
index 848ef78..f38d22f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_7ea4b5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl
index 711aed3..803563a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7edb05() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl
index 711aed3..803563a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7edb05() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl
index b63dcf6..129bc93 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_8057cb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl
index b63dcf6..129bc93 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_8057cb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl
index a8a7f21..0b9d9cc 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8243a1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl
index a8a7f21..0b9d9cc 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8243a1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl
index bad5538..39b5787 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_835f90() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl
index bad5538..39b5787 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_835f90() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl
index ea48eff..d285f99 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_867ead() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl
index ea48eff..d285f99 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_867ead() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl
index 5604645..de46bc7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_879b73() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl
index 5604645..de46bc7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_879b73() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl
index 3b9d8a2..e3af3da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_87b42d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl
index 3b9d8a2..e3af3da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_87b42d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl
index 18a1499..6662d7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_881dd4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl
index 18a1499..6662d7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_881dd4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl
index 560c74a..eb250d5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8a35f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl
index 560c74a..eb250d5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8a35f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl
index 11eb4b3..253b2ce 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8af728() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl
index 11eb4b3..253b2ce 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8af728() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl
index ae72b51e8..e975edf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8b9906() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl
index ae72b51e8..e975edf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8b9906() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl
index e690d18..1fbec7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8bd369() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl
index e690d18..1fbec7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8bd369() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl
index 1a8058c..e56d185 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8e15f4() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl
index 1a8058c..e56d185 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8e15f4() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl
index cdeca41..25b5aa3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_902179() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl
index cdeca41..25b5aa3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_902179() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl
index 054f042..726bb60 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_904b0f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl
index 054f042..726bb60 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_904b0f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl
index e39c622..b0c517e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_90dd74() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl
index e39c622..b0c517e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_90dd74() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl
index c7115dc..bb284be 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_91e3b4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl
index c7115dc..bb284be 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_91e3b4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl
index a4230dc..857b2d7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureDimensions_920006() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl
index a4230dc..857b2d7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureDimensions_920006() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl
index 7bc54ce..2d5e236 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_9573f3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl
index 7bc54ce..2d5e236 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_9573f3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl
index cb60451..b75a5cd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_98b2d3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl
index cb60451..b75a5cd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_98b2d3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl
index 3591f27..1aec6dd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_991ea9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl
index 3591f27..1aec6dd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_991ea9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl
index 3bb831a..9a96676 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b10a0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl
index 3bb831a..9a96676 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b10a0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl
index 17738e4..8971fbe 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b223b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl
index 17738e4..8971fbe 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b223b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl
index 24b47b1..396a553 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9baf27() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl
index 24b47b1..396a553 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9baf27() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl
index a32e77a..f81a88e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureDimensions_9c7a00() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl
index a32e77a..f81a88e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureDimensions_9c7a00() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl
index 1ef4571..e503cfa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9cd4ca() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl
index 1ef4571..e503cfa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9cd4ca() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl
index 0f9f75d..fe18c70 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_9cd8ad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl
index 0f9f75d..fe18c70 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_9cd8ad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl
index aef56af..3e426ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9d0bac() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl
index aef56af..3e426ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9d0bac() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl
index c701d6e..45a1529 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9dc27a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl
index c701d6e..45a1529 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9dc27a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl
index ca7ad70..183994c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9e0794() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl
index ca7ad70..183994c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9e0794() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl
index 9087cfa..27bfc1d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_9fcc3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl
index 9087cfa..27bfc1d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_9fcc3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl
index d0f64b6..69ee728 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a105a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl
index d0f64b6..69ee728 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a105a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl
index c9d4718..3207a55 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_a14386() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl
index c9d4718..3207a55 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_a14386() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl
index ac64c4b..9909d5b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a1598a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl
index ac64c4b..9909d5b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a1598a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl
index 23cce53..96d75c6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a20ba2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl
index 23cce53..96d75c6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a20ba2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl
index 4c696de..84ad460 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a25d9b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl
index 4c696de..84ad460 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a25d9b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl
index 3b4efad..e2b5927 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a2ba5e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl
index 3b4efad..e2b5927 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a2ba5e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl
index d271ee8..8e02ead 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a3ea91() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl
index d271ee8..8e02ead 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a3ea91() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl
index fbbea4c..01544a6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a48049() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl
index fbbea4c..01544a6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a48049() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl
index f4834d3..74bd2fa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_a4cd56() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl
index f4834d3..74bd2fa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_a4cd56() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl
index 4150f8e..3d92573 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a65776() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl
index 4150f8e..3d92573 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a65776() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl
index d02454f..ceb5ea2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_aa4353() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl
index d02454f..ceb5ea2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_aa4353() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl
index 8b4fa28..3f942cb9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureDimensions_aac604() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl
index 8b4fa28..3f942cb9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureDimensions_aac604() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl
index 86b2123..31324ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ae4595() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl
index 86b2123..31324ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ae4595() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl
index 6f40fa5..05abfa2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_af46ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl
index 6f40fa5..05abfa2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_af46ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl
index 68d1d16..5e0fde9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b16352() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl
index 68d1d16..5e0fde9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b16352() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl
index dffd20cc..b3f4128 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b284b8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl
index dffd20cc..b3f4128 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b284b8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl
index 9572f93..9e85ffa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_b3ab5e() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl
index 9572f93..9e85ffa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_b3ab5e() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl
index 7cf3084..0f922fb4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureDimensions_b46d97() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl
index 7cf3084..0f922fb4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureDimensions_b46d97() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl
index 3e8dad8..e45de43 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_b56112() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl
index 3e8dad8..e45de43 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_b56112() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl
index 1461abd..6532188 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b5d68e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl
index 1461abd..6532188 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b5d68e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl
index 42dfcaf..1dd834e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_b6bbf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl
index 42dfcaf..1dd834e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_b6bbf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl
index cf57cb3..4be0ca3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b8287f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl
index cf57cb3..4be0ca3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b8287f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl
index 0982b1d..1a7e1a2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bb95d9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl
index 0982b1d..1a7e1a2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bb95d9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl
index b3b0541..bab0c63 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bbe285() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl
index b3b0541..bab0c63 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bbe285() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl
index 07cdf84..7dd4906 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bc96f6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl
index 07cdf84..7dd4906 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bc96f6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl
index c3ec1ee..8d24349 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_bd94c8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl
index c3ec1ee..8d24349 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_bd94c8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl
index 2a96278..616e9a7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bec716() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl
index 2a96278..616e9a7 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bec716() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl
index 232b522..7812b3d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bf9170() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl
index 232b522..7812b3d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bf9170() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl
index 78dc797..a828ae4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c1189e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl
index 78dc797..a828ae4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c1189e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl
index a02c71d..af9a475 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c1dbf6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl
index a02c71d..af9a475 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c1dbf6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl
index 35aa0f4..d0a7083 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c2cdd3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl
index 35aa0f4..d0a7083 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c2cdd3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl
index 767bf02..ffa1ab8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c44fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl
index 767bf02..ffa1ab8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c44fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl
index f2f0b84..9c044b9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_c5a36e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl
index f2f0b84..9c044b9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_c5a36e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl
index 6987040..2a1dfee 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c6b44c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl
index 6987040..2a1dfee 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c6b44c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl
index 35885e3..76ab3c2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c82420() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl
index 35885e3..76ab3c2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c82420() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
index 2f680ac..94d7e80 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_c871f3() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
index 2f680ac..94d7e80 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_c871f3() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl
index 322c243..a0fb724 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ca10cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl
index 322c243..a0fb724 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ca10cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl
index 599eeb0..26871da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_cad3b7() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl
index 599eeb0..26871da 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_cad3b7() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl
index ce77d4f..7ae3e4d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_cc947b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl
index ce77d4f..7ae3e4d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_cc947b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl
index 8d0869f..c449599 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_cd3033() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl
index 8d0869f..c449599 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_cd3033() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl
index 227ba55..00262cf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_cf2b50() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl
index 227ba55..00262cf 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_cf2b50() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl
index 9b2eb1b..b282aac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_d0778e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl
index 9b2eb1b..b282aac 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_d0778e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl
index aa63828..1360c4f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d1b882() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl
index aa63828..1360c4f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d1b882() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl
index ecb9ecd..a7df088 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_d3accd() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl
index ecb9ecd..a7df088 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_d3accd() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl
index 4c6edea..2f5896d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44ac3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl
index 4c6edea..2f5896d 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44ac3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl
index a2f3d2f..3920b72 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44dd1() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl
index a2f3d2f..3920b72 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44dd1() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl
index 63e2d87..3a57d41 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d63c28() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl
index 63e2d87..3a57d41 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d63c28() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl
index c03559b..dab8ee1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d6f3cf() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl
index c03559b..dab8ee1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d6f3cf() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl
index 6efdde7..e1f716a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d8ba68() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl
index 6efdde7..e1f716a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d8ba68() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl
index 70909c3..7bca93e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_d8f887() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl
index 70909c3..7bca93e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_d8f887() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl
index 21652d8..915ea63 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_daf0fe() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl
index 21652d8..915ea63 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_daf0fe() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl
index 31e6abc..8c439b2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_db7131() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl
index 31e6abc..8c439b2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_db7131() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl
index 8100087..1593f7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dc83ce() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl
index 8100087..1593f7a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dc83ce() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl
index aac1c93..d7ef66a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_deb3c0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl
index aac1c93..d7ef66a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_deb3c0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl
index 2482b6e..aa6902b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dee461() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl
index 2482b6e..aa6902b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dee461() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl
index 52d5b91..436cf2f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_dfdc32() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl
index 52d5b91..436cf2f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_dfdc32() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl
index 79e0cb6..3cdad2a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e18a8b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl
index 79e0cb6..3cdad2a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e18a8b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl
index 7d85fc3..a2de6c0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e4bfd2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl
index 7d85fc3..a2de6c0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e4bfd2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl
index dd035a8..0ca789e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e4e310() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl
index dd035a8..0ca789e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e4e310() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl
index 077a4dc..b218df6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e4f021() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl
index 077a4dc..b218df6 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e4f021() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl
index 2d1276a..e528e37 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e50eb8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl
index 2d1276a..e528e37 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e50eb8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
index e66de90..a7f0ff1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_e5a203() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
index e66de90..a7f0ff1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_e5a203() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl
index 221cb31..3f9aaa2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_e738f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl
index 221cb31..3f9aaa2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_e738f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl
index f7e6572..7675fc5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e824b6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl
index f7e6572..7675fc5 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e824b6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl
index 9a640a6..9faf8ff 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e99308() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl
index 9a640a6..9faf8ff 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e99308() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl
index 4c3e1be..e81c5d8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_eafe19() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl
index 4c3e1be..e81c5d8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_eafe19() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(1u), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(1u), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl
index 64838ef..be627fa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb03b1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl
index 64838ef..be627fa 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb03b1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl
index e806bbe..89af911 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb10d6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl
index e806bbe..89af911 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb10d6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl
index d9e27b7..a545a4b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb9f4d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl
index d9e27b7..a545a4b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb9f4d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl
index 2fa8219..44525ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ed1030() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl
index 2fa8219..44525ba 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ed1030() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl
index 1f77ddc..f707533 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ef2e58() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl
index 1f77ddc..f707533 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ef2e58() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl
index 68d8cab..f98e093 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureDimensions_f17acd() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl
index 68d8cab..f98e093 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureDimensions_f17acd() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl
index d0b75f6..a53a77f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f3a2ac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl
index d0b75f6..a53a77f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f3a2ac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl
index e3bee51..892bcdd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_f4321c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl
index e3bee51..892bcdd 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_f4321c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl
index 3cffe28..362c4ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f48886() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl
index 3cffe28..362c4ec 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f48886() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl
index 8b55a45..7b5bb65 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f4e469() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl
index 8b55a45..7b5bb65 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f4e469() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl
index 491f233..98b01d3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f55a94() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl
index 491f233..98b01d3 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f55a94() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl
index 9591a79..7cdef20 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f626b3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl
index 9591a79..7cdef20 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f626b3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl
index 98b1f65..7632456 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f7bac5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl
index 98b1f65..7632456 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f7bac5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl
index 71f679f..3702f25 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f8522e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl
index 71f679f..3702f25 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f8522e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl
index 9d3ce96..5d25fbe 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f93ece() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl
index 9d3ce96..5d25fbe 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f93ece() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl
index 412fdb7..758a34b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f94e55() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl
index 412fdb7..758a34b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f94e55() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl
index abc5d60..ce95a52 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_fbb15a() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl
index abc5d60..ce95a52 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_fbb15a() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl
index 3e18638..97f15e0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_fdf6e9() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl
index 3e18638..97f15e0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_fdf6e9() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl
index 00b81f3..fbadc9a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl
index 00b81f3..fbadc9a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl
index c948413..c61ebf7 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl
index c948413..c61ebf7 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl
index 2356182..0324a8f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_014a3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl
index 2356182..0324a8f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_014a3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl
index fd30d92..5bf9449 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_071ebc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl
index fd30d92..5bf9449 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_071ebc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl
index 35f29e8..a28bd3e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_0856ae() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl
index 35f29e8..a28bd3e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_0856ae() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl
index c3d9af0..6b83e57 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0ec222() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl
index c3d9af0..6b83e57 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0ec222() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl
index 84e66ba..8cd47bd 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0fe8dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl
index 84e66ba..8cd47bd 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0fe8dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl
index bde263c..78dfbd0 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_17ccad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl
index bde263c..78dfbd0 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_17ccad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl
index dc0f0b0..75aef19 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_1f858a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl
index dc0f0b0..75aef19 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_1f858a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl
index 220c2e9..ba4113f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_24d572() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl
index 220c2e9..ba4113f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_24d572() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl
index b2894a5..ce85070 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_26c9f9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl
index b2894a5..ce85070 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_26c9f9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl
index fc5fbc8..90fc1df 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_2a48dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl
index fc5fbc8..90fc1df 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_2a48dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl
index c49e663..761912b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_2d95ea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl
index c49e663..761912b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_2d95ea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl
index 1e8fd28..6d6fd9e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_327d70() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl
index 1e8fd28..6d6fd9e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_327d70() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl
index acd79a9..cb16560 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_32ca10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl
index acd79a9..cb16560 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_32ca10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl
index 781c4de..9152e04 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_3465ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl
index 781c4de..9152e04 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_3465ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl
index 6071469..3b60f31 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_34cefa() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl
index 6071469..3b60f31 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_34cefa() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl
index b98557b..a112150 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_3580ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl
index b98557b..a112150 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_3580ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl
index 8b32773..2b22915 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_379cc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl
index 8b32773..2b22915 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_379cc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl
index 9ffe6fe..0f3b33d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_37bc8a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl
index 9ffe6fe..0f3b33d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_37bc8a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl
index a8577b6..58572b7 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_380a60() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl
index a8577b6..58572b7 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_380a60() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl
index 24e2788..726491a 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_3ad143() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl
index 24e2788..726491a 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_3ad143() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl
index a3088ef..a581c3d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_3eff89() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl
index a3088ef..a581c3d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_3eff89() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl
index e842f1d..67d8998 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_485774() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl
index e842f1d..67d8998 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_485774() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl
index 03c7fd3..a082c09 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLayers_48ef47() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl
index 03c7fd3..a082c09 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLayers_48ef47() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl
index a6d17f8..2eeb930 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_4adaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl
index a6d17f8..2eeb930 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_4adaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl
index 4d02aac..e5d8c88 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_4c4333() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl
index 4d02aac..e5d8c88 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_4c4333() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl
index dac4710..7da9683 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_520086() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl
index dac4710..7da9683 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_520086() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl
index 6646233..8cf0461 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_52dfc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl
index 6646233..8cf0461 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_52dfc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl
index 549760b..bdab3d3 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_54a654() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl
index 549760b..bdab3d3 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_54a654() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl
index 0f8d1d7..b3964c3 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_555f67() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl
index 0f8d1d7..b3964c3 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_555f67() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl
index 902b1ac..cbcb7c6 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_59cc27() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl
index 902b1ac..cbcb7c6 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_59cc27() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl
index dbebc8d..151759c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_59eb57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl
index dbebc8d..151759c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_59eb57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl
index b2881ed..58f9688 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_5ee8f2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl
index b2881ed..58f9688 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_5ee8f2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl
index 646dc8d..a3d35e0 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_5f20d1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl
index 646dc8d..a3d35e0 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_5f20d1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl
index 2785da7..e0d553b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_61bd23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl
index 2785da7..e0d553b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_61bd23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl
index 428efd2..b6ba6f4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_622aa2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl
index 428efd2..b6ba6f4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_622aa2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl
index 0302160..6e558fc 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_6b4321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl
index 0302160..6e558fc 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_6b4321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl
index a48cab6..662b80f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_6da0eb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl
index a48cab6..662b80f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_6da0eb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl
index 40adca8..b767423 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_77be7b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl
index 40adca8..b767423 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_77be7b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl
index d948f27..da4a091b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_7895f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl
index d948f27..da4a091b 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_7895f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl
index f845036..b394956 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_7f28cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl
index f845036..b394956 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_7f28cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl
index 8e83757..26ce26c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8356f7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl
index 8e83757..26ce26c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8356f7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl
index 0fe5d6d..7112fd6 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_878dea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl
index 0fe5d6d..7112fd6 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_878dea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl
index 036e9d5..42a6330 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_87faad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl
index 036e9d5..42a6330 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_87faad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl
index c5ee354..eaad58a 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_8ac32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl
index c5ee354..eaad58a 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_8ac32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl
index 33006f3..ed63fd7 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8bd987() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl
index 33006f3..ed63fd7 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8bd987() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl
index 8c7f6b1..d9a207d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8dbf23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl
index 8c7f6b1..d9a207d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8dbf23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl
index 8cfa2e6..ef0f42f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8e1bd0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl
index 8cfa2e6..ef0f42f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8e1bd0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl
index fdece85..9fd1739 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_90b8cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl
index fdece85..9fd1739 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_90b8cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl
index 6f529a9..044ae5e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_9695c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl
index 6f529a9..044ae5e 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_9695c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl
index 878814a..c88f0fc 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_98a9cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl
index 878814a..c88f0fc 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_98a9cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl
index e9502aa..4184d5f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_9c60e3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl
index e9502aa..4184d5f 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_9c60e3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl
index ac4dba6..bc41b29 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_a54655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl
index ac4dba6..bc41b29 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_a54655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl
index 0333842..5b82939 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLayers_a9d3f5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl
index 0333842..5b82939 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLayers_a9d3f5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl
index a172d3f..7819af4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_aac630() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl
index a172d3f..7819af4 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_aac630() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl
index 9ab6bf5..f067888 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_bf2f76() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl
index 9ab6bf5..f067888 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_bf2f76() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl
index f41aad9..1fb8fe0 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_c1eca9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl
index f41aad9..1fb8fe0 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_c1eca9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl
index 0dbc24b..f714bf2 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_d3e21f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl
index 0dbc24b..f714bf2 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_d3e21f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl
index 442aa59..c80f6d5 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_d3f655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl
index 442aa59..c80f6d5 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_d3f655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl
index 09b778a..6798290 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_d75a0b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl
index 09b778a..6798290 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_d75a0b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl
index 4b98062..23c40c9 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_de8087() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl
index 4b98062..23c40c9 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_de8087() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl
index 0cbee1e..b1efd6d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_e47aac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl
index 0cbee1e..b1efd6d 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_e47aac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl
index d2a9e20..19d1da9 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_f1783f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl
index d2a9e20..19d1da9 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_f1783f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl
index 21246da..7ed6653 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_181090() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl
index 21246da..7ed6653 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_181090() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl
index 77573f3..18524fe 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a3fa9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl
index 77573f3..18524fe 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a3fa9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl
index f8e7ae1..ef678de 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a7fc3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl
index f8e7ae1..ef678de 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a7fc3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl
index cdc6d5f..3990ce2 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_2267d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl
index cdc6d5f..3990ce2 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_2267d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl
index c36b792..840031b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_24b2c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl
index c36b792..840031b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_24b2c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl
index 83c4e93..7fcb205 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLevels_2bea6c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl
index 83c4e93..7fcb205 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLevels_2bea6c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl
index bdd00ee..3798da1 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_2df1ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl
index bdd00ee..3798da1 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_2df1ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl
index 5229ace8..cf8aa7f 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_46dbd8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl
index 5229ace8..cf8aa7f 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_46dbd8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl
index 22e1f41..8fbcc09 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_60d9b8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl
index 22e1f41..8fbcc09 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_60d9b8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl
index 34c61d3..47cd9ac 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_903920() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl
index 34c61d3..47cd9ac 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_903920() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl
index e80cf9d..11a5203 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_9a1a65() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl
index e80cf9d..11a5203 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_9a1a65() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl
index 0aca756..99eaaf0 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_adc783() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl
index 0aca756..99eaaf0 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_adc783() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl
index 08d9ecd..6245875 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLevels_ae911c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl
index 08d9ecd..6245875 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLevels_ae911c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl
index 5b6d21e..602d7a1 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_c386c8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl
index 5b6d21e..602d7a1 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_c386c8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl
index 972c802..45dacfc 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_c399f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl
index 972c802..45dacfc 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_c399f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl
index 31686ba..191d99b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint textureNumLevels_c8c25c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl
index 31686ba..191d99b 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint textureNumLevels_c8c25c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl
index 4b905f8..2d3c532 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint textureNumLevels_d63126() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl
index 4b905f8..2d3c532 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint textureNumLevels_d63126() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl
index b4d6b8d..e203c6e 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_d8f73b() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl
index b4d6b8d..e203c6e 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_d8f73b() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl
index 97c8e6d..67b2126 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_ef7944() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl
index 97c8e6d..67b2126 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_ef7944() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl
index 47b9d10..584fd39 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_efd6df() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl
index 47b9d10..584fd39 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_efd6df() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl
index 76af2c6..bbab86d 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_f742c0() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl
index 76af2c6..bbab86d 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_f742c0() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl
index 0b5a527..d319a22 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_fe2171() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl
index 0b5a527..d319a22 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_fe2171() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl
index fa93726..5b7a818 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint textureNumSamples_50f399() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl
index fa93726..5b7a818 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint textureNumSamples_50f399() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl
index 887e950..31eeb42 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint textureNumSamples_c1a777() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl
index 887e950..31eeb42 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint textureNumSamples_c1a777() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl
index fb666d7..4957460 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_dbb799() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl
index fb666d7..4957460 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_dbb799() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl
index b3a562a..51f2eb4 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_ecd321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl
index b3a562a..51f2eb4 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_ecd321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl
index fde0c05..3f4ffd3 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl
@@ -60,9 +60,9 @@
   if ((params.numPlanes == 1u)) {
     float4 v_9 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f));
     v_7 = v_9.xyz;
-    v_8 = v_9[3u];
+    v_8 = v_9.w;
   } else {
-    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f))[0u];
+    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f)).x;
     float2 v_11 = clamp(v_5, params.samplePlane1RectMin, params.samplePlane1RectMax);
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_10, plane_1.SampleLevel(tint_sampler, v_11, float(0.0f)).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
index fde0c05..3f4ffd3 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
@@ -60,9 +60,9 @@
   if ((params.numPlanes == 1u)) {
     float4 v_9 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f));
     v_7 = v_9.xyz;
-    v_8 = v_9[3u];
+    v_8 = v_9.w;
   } else {
-    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f))[0u];
+    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f)).x;
     float2 v_11 = clamp(v_5, params.samplePlane1RectMin, params.samplePlane1RectMax);
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_10, plane_1.SampleLevel(tint_sampler, v_11, float(0.0f)).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl
index 6c93395..6ebf8f6 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float4 textureSampleBaseClampToEdge_9ca02c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   float2 v_1 = ((0.5f).xx / float2(v));
   float2 v_2 = clamp((1.0f).xx, v_1, ((1.0f).xx - v_1));
   float4 res = arg_0.SampleLevel(arg_1, v_2, float(0.0f));
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl
index 6c93395..6ebf8f6 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 SamplerState arg_1 : register(s1, space1);
 float4 textureSampleBaseClampToEdge_9ca02c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   float2 v_1 = ((0.5f).xx / float2(v));
   float2 v_2 = clamp((1.0f).xx, v_1, ((1.0f).xx - v_1));
   float4 res = arg_0.SampleLevel(arg_1, v_2, float(0.0f));
diff --git a/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl
index 6095b8f..73d534a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_00229f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl
index 6095b8f..73d534a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/00229f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_00229f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl
index cdca621..dbb87f9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_00348c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl
index cdca621..dbb87f9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/00348c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_00348c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl
index 7adfeea..8f9fdfd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_022903() {
   uint arg_1 = 1u;
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl
index 7adfeea..8f9fdfd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/022903.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_022903() {
   uint arg_1 = 1u;
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl
index a2c3154..f25d5cd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0276ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl
index a2c3154..f25d5cd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0276ec.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0276ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl
index b37efd3..3b2f85b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_029589() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl
index b37efd3..3b2f85b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/029589.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_029589() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl
index 37817bf..41f6b29 100644
--- a/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_03f81e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl
index 37817bf..41f6b29 100644
--- a/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/03f81e.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_03f81e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl
index 6fb00e0..01985ad 100644
--- a/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_07f1ba() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl
index 6fb00e0..01985ad 100644
--- a/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/07f1ba.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_07f1ba() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl
index 2aa6bb5..06cfb15 100644
--- a/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_088918() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl
index 2aa6bb5..06cfb15 100644
--- a/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/088918.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_088918() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
index f82c868..fc9e297 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_0890c6() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
index f82c868..fc9e297 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0890c6.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_0890c6() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl
index d80cfc5..d0a387b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_08e371() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl
index d80cfc5..d0a387b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/08e371.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_08e371() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl
index 0e2dcd0..d45f8c4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0973c9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl
index 0e2dcd0..d45f8c4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0973c9.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0973c9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl
index 4c13e8e..5beabed 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0baa0d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl
index 4c13e8e..5beabed 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0baa0d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_0baa0d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl
index ca4e556..77245f9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_0d4a7c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl
index ca4e556..77245f9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0d4a7c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_0d4a7c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl
index 8f56acd..2ede2e1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0de70c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl
index 8f56acd..2ede2e1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0de70c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_0de70c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl
index 41a0baf..7e00967 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_0ff9a4() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl
index 41a0baf..7e00967 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_0ff9a4() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl
index 4a660c2..4e632ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_135176() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl
index 4a660c2..4e632ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/135176.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_135176() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl
index 605dd74..81b5582 100644
--- a/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_13f8db() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl
index 605dd74..81b5582 100644
--- a/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/13f8db.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_13f8db() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl
index 7c0396a..014d487 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1417dd() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl
index 7c0396a..014d487 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1417dd.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1417dd() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl
index a9a72d4..096914c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_15aa17() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl
index a9a72d4..096914c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/15aa17.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_15aa17() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl
index 1ff9b38..8471781 100644
--- a/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_15b577() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl
index 1ff9b38..8471781 100644
--- a/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/15b577.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_15b577() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl
index 4f59075..6783082 100644
--- a/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18160d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl
index 4f59075..6783082 100644
--- a/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/18160d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18160d() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl
index 63589ae..d1d79ca 100644
--- a/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18f19f() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl
index 63589ae..d1d79ca 100644
--- a/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/18f19f.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_18f19f() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl
index 766770c..2e10381 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1a2be7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl
index 766770c..2e10381 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1a2be7.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1a2be7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl
index a206e2b..214502b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1b720f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl
index a206e2b..214502b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1b720f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_1b720f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
index 4fec729..e45e640 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_1bc428() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
index 4fec729..e45e640 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1bc428.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_1bc428() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl
index 05ffd8e..1baa7b3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_1bd78c() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl
index 05ffd8e..1baa7b3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1bd78c.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_1bd78c() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl
index a632a46..6409b4a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1e4024() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl
index a632a46..6409b4a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/1e4024.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_1e4024() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl
index afcdd07..03e0fb6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_20eaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl
index afcdd07..03e0fb6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/20eaad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_20eaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl
index c96e386..14ceec2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_224113() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl
index c96e386..14ceec2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/224113.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_224113() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl
index ead099b..498e6fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_22b5b6() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl
index ead099b..498e6fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_22b5b6() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl
index 7e3a7dd..af658aa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_24db07() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl
index 7e3a7dd..af658aa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/24db07.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_24db07() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl
index 14f18ae..cb0f536 100644
--- a/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_25d284() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl
index 14f18ae..cb0f536 100644
--- a/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/25d284.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_25d284() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl
index 8e3df27..3abe6db 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2674d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl
index 8e3df27..3abe6db 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2674d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl
index 546f775..e768d2f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_268ddb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl
index 546f775..e768d2f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/268ddb.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_268ddb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl
index ced44ee..db7218f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_282978() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl
index ced44ee..db7218f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/282978.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_282978() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl
index 84e3d8e..49bccd2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2a58b7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl
index 84e3d8e..49bccd2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2a58b7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_2a58b7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl
index 713a1a93..590ee10 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_2e443d() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl
index 713a1a93..590ee10 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2e443d.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_2e443d() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl
index 6a175d6..53eba9c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_2fd2a4() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl
index 6a175d6..53eba9c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2fd2a4.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_2fd2a4() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl
index 6834f5d..ffa8e01 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_2ff32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl
index 6834f5d..ffa8e01 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2ff32a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_2ff32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl
index 0a1f39f..a2af4a6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_305dd5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl
index 0a1f39f..a2af4a6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/305dd5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_305dd5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl
index 8a06b3f..96e62e7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31799c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl
index 8a06b3f..96e62e7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/31799c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31799c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl
index 934473c..ec089c1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31d00d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl
index 934473c..ec089c1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/31d00d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_31d00d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl
index db08c89..899dc03 100644
--- a/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_325338() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl
index db08c89..899dc03 100644
--- a/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/325338.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_325338() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl
index 2f76902..23544d0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_346fee() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl
index 2f76902..23544d0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_346fee() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl
index fcf5bd7..4a32970 100644
--- a/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35a7e5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl
index fcf5bd7..4a32970 100644
--- a/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/35a7e5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35a7e5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl
index 6e251f9..d5c190c5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35ee69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl
index 6e251f9..d5c190c5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_35ee69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl
index f8a095d..465efbc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_36eeb7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl
index f8a095d..465efbc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/36eeb7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_36eeb7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl
index f691a73..e8e2e19 100644
--- a/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_378a65() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl
index f691a73..e8e2e19 100644
--- a/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/378a65.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_378a65() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl
index 144018a..d3d3634 100644
--- a/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_382b16() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl
index 144018a..d3d3634 100644
--- a/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/382b16.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_382b16() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl
index 84ebd59..0fada5e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3834f8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl
index 84ebd59..0fada5e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3834f8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3834f8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl
index 2af52f17..64b0c03 100644
--- a/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_38c9ca() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl
index 2af52f17..64b0c03 100644
--- a/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/38c9ca.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_38c9ca() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl
index c403008..439acda 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_3963d0() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl
index c403008..439acda 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_3963d0() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl
index b60638e..787d7a0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_397dab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl
index b60638e..787d7a0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/397dab.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_397dab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl
index 56fb43c..2ec9415 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_3a5bb1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl
index 56fb43c..2ec9415 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3a5bb1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_3a5bb1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl
index 6ba7780..c150a35 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3a7b69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl
index 6ba7780..c150a35 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3a7b69.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3a7b69() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl
index 7eb2678..8ac1eca 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_3b38f6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl
index 7eb2678..8ac1eca 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3b38f6.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint2 textureDimensions_3b38f6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl
index b5a2c6f..5dd6942 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3baab5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl
index b5a2c6f..5dd6942 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3baab5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3baab5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl
index 4359b2f..988f925 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3bf12a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl
index 4359b2f..988f925 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3bf12a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_3bf12a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl
index 49724a4..3187109 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_3c66f0() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl
index 49724a4..3187109 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_3c66f0() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl
index 37fcf7f..c143034 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3f3474() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl
index 37fcf7f..c143034 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3f3474.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3f3474() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl
index 1a371b3..5426028 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_3fc3dc() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl
index 1a371b3..5426028 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3fc3dc.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_3fc3dc() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl
index 56c6320..ed2c404 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3ff0a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl
index 56c6320..ed2c404 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3ff0a5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_3ff0a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl
index e01e975..81c3864 100644
--- a/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_40c671() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl
index e01e975..81c3864 100644
--- a/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/40c671.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_40c671() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl
index 0df09a0..64db6aa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_40da20() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl
index 0df09a0..64db6aa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/40da20.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_40da20() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl
index 593cc12..18d915a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_40ecf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl
index 593cc12..18d915a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/40ecf4.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_40ecf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl
index 7c07958..a8986e2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_41545f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl
index 7c07958..a8986e2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/41545f.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_41545f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl
index b4ff971..5a3c6b2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_423519() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl
index b4ff971..5a3c6b2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/423519.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_423519() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl
index 59baea6..6e4bb95 100644
--- a/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_427f92() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl
index 59baea6..6e4bb95 100644
--- a/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/427f92.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_427f92() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl
index 50a588d..b5c5583 100644
--- a/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_439651() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl
index 50a588d..b5c5583 100644
--- a/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_439651() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl
index 5de6d6f..9974faf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_445376() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl
index 5de6d6f..9974faf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/445376.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_445376() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl
index 23d171b..070ffa2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_44b358() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl
index 23d171b..070ffa2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/44b358.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_44b358() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl
index f54010c..0bd2937 100644
--- a/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_452fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl
index f54010c..0bd2937 100644
--- a/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/452fc1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_452fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl
index 0f6b226..d913877 100644
--- a/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_46f0fc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl
index 0f6b226..d913877 100644
--- a/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/46f0fc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_46f0fc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl
index d5c2a72..a823146 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4716a4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl
index d5c2a72..a823146 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4716a4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4716a4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl
index 370353b..65e125f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_475c10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl
index 370353b..65e125f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/475c10.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_475c10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl
index 278cafe..636b440 100644
--- a/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_49a067() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl
index 278cafe..636b440 100644
--- a/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/49a067.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_49a067() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl
index f0cd024..b22bb7c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_4acec7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl
index f0cd024..b22bb7c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_4acec7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl
index 4c8b444..56ca1b0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4b26ef() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl
index 4c8b444..56ca1b0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4b26ef.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4b26ef() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl
index 3707879..a87ba82 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4be71b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl
index 3707879..a87ba82 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4be71b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4be71b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl
index 71e5602..76905f0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4d1f71() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl
index 71e5602..76905f0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4d1f71.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_4d1f71() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl
index ca1a07e..275a7df 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4d27b3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl
index ca1a07e..275a7df 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4d27b3.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4d27b3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl
index 6d87a7c..e6c5878 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4df14c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl
index 6d87a7c..e6c5878 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4df14c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_4df14c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl
index d9f6f2a..0bde84e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_528c0e() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl
index d9f6f2a..0bde84e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/528c0e.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_528c0e() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl
index ae1ea9c..0fcd588 100644
--- a/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_52cf60() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl
index ae1ea9c..0fcd588 100644
--- a/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/52cf60.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_52cf60() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl
index bdb670d..3348a9c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_534ef8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl
index bdb670d..3348a9c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/534ef8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_534ef8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl
index 179dd6a..5468656 100644
--- a/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_55fdeb() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl
index 179dd6a..5468656 100644
--- a/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/55fdeb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_55fdeb() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl
index dfc7cc6..283c69a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_578e75() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl
index dfc7cc6..283c69a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/578e75.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_578e75() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl
index 5b06b67..65c5279 100644
--- a/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_579eee() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl
index 5b06b67..65c5279 100644
--- a/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/579eee.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_579eee() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl
index f5e1080..f7466ae 100644
--- a/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_591981() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl
index f5e1080..f7466ae 100644
--- a/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/591981.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_591981() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl
index 3e95111..fdcc5a6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_599ab5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl
index 3e95111..fdcc5a6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/599ab5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_599ab5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl
index 45c995d..c20fbce 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_5b4b10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl
index 45c995d..c20fbce 100644
--- a/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/5b4b10.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_5b4b10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl
index ca336c9..91a76ab 100644
--- a/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_609d34() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl
index ca336c9..91a76ab 100644
--- a/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/609d34.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_609d34() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl
index 5982595..15c2378 100644
--- a/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_617dc8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl
index 5982595..15c2378 100644
--- a/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/617dc8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_617dc8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl
index 8e627a6..3df7dcf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62cb5a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl
index 8e627a6..3df7dcf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/62cb5a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62cb5a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl
index f0205ba..35d229d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62e7ae() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl
index f0205ba..35d229d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/62e7ae.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_62e7ae() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl
index fb554a7..d56fe3f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_64dc74() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl
index fb554a7..d56fe3f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/64dc74.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_64dc74() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl
index baaf8a4..8f559c2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_674058() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl
index baaf8a4..8f559c2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/674058.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_674058() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl
index 8d07e68..6d63616 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dae40() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl
index 8d07e68..6d63616 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6dae40.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dae40() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl
index 146f7b5..b45ae1d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dbef4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl
index 146f7b5..b45ae1d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6dbef4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_6dbef4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
index 678847f..08b4575 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_6e6c7a() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
index 678847f..08b4575 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6e6c7a.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_6e6c7a() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl
index 3e057c7..c25d8c9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_6e72c5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl
index 3e057c7..c25d8c9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6e72c5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_6e72c5() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl
index 6cacf9d..f12538f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_6f1b5d() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl
index 6cacf9d..f12538f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/6f1b5d.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_6f1b5d() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl
index eafc1e5..888bac0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_70dd33() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl
index eafc1e5..888bac0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/70dd33.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_70dd33() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl
index b82f8bf..5cb79ac 100644
--- a/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_715917() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl
index b82f8bf..5cb79ac 100644
--- a/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/715917.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_715917() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl
index 6a50304..161e8da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7327fa() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl
index 6a50304..161e8da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7327fa.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7327fa() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
index 657ac00..84a254b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_756031() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
index 657ac00..84a254b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/756031.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_756031() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl
index 33f39e7..8da11b3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_756304() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl
index 33f39e7..8da11b3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/756304.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_756304() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl
index c831c94..9274285 100644
--- a/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_790e57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl
index c831c94..9274285 100644
--- a/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/790e57.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_790e57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl
index 2eb6b69..9cb8292 100644
--- a/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_795fbb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl
index 2eb6b69..9cb8292 100644
--- a/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/795fbb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_795fbb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl
index ee8bd36..7a0e261 100644
--- a/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_79d168() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl
index ee8bd36..7a0e261 100644
--- a/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/79d168.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_79d168() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl
index 818de99..338dcb4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_7a3890() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl
index 818de99..338dcb4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7a3890.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_7a3890() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl
index b879760..9cea906 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7a9e30() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl
index b879760..9cea906 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7a9e30.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7a9e30() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl
index ab81e24..11e58d3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_7c7c64() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl
index ab81e24..11e58d3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7c7c64.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_7c7c64() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl
index 848ef78..f38d22f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_7ea4b5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl
index 848ef78..f38d22f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7ea4b5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_7ea4b5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl
index 711aed3..803563a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7edb05() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl
index 711aed3..803563a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/7edb05.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_7edb05() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl
index b63dcf6..129bc93 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_8057cb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl
index b63dcf6..129bc93 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8057cb.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_8057cb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl
index a8a7f21..0b9d9cc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8243a1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl
index a8a7f21..0b9d9cc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8243a1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8243a1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl
index bad5538..39b5787 100644
--- a/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_835f90() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl
index bad5538..39b5787 100644
--- a/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/835f90.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_835f90() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl
index ea48eff..d285f99 100644
--- a/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_867ead() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl
index ea48eff..d285f99 100644
--- a/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/867ead.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_867ead() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl
index 5604645..de46bc7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_879b73() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl
index 5604645..de46bc7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_879b73() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl
index 3b9d8a2..e3af3da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_87b42d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl
index 3b9d8a2..e3af3da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/87b42d.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_87b42d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl
index 18a1499..6662d7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_881dd4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl
index 18a1499..6662d7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/881dd4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_881dd4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl
index 560c74a..eb250d5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8a35f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl
index 560c74a..eb250d5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8a35f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl
index 11eb4b3..253b2ce 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8af728() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl
index 11eb4b3..253b2ce 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8af728.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8af728() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl
index ae72b51e8..e975edf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8b9906() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl
index ae72b51e8..e975edf 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8b9906.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_8b9906() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl
index e690d18..1fbec7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8bd369() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl
index e690d18..1fbec7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8bd369.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_8bd369() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl
index 1a8058c..e56d185 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8e15f4() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl
index 1a8058c..e56d185 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8e15f4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_8e15f4() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl
index cdeca41..25b5aa3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_902179() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl
index cdeca41..25b5aa3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/902179.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_902179() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl
index 054f042..726bb60 100644
--- a/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_904b0f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl
index 054f042..726bb60 100644
--- a/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/904b0f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_904b0f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl
index e39c622..b0c517e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_90dd74() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl
index e39c622..b0c517e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/90dd74.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_90dd74() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl
index c7115dc..bb284be 100644
--- a/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_91e3b4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl
index c7115dc..bb284be 100644
--- a/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/91e3b4.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_91e3b4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl
index 5f02808..0846332 100644
--- a/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_920006() {
   int arg_1 = int(1);
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl
index 5f02808..0846332 100644
--- a/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/920006.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_920006() {
   int arg_1 = int(1);
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl
index 7bc54ce..2d5e236 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_9573f3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl
index 7bc54ce..2d5e236 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_9573f3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl
index cb60451..b75a5cd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_98b2d3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl
index cb60451..b75a5cd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_98b2d3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl
index ef0f612..2c9cbd2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_991ea9() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl
index ef0f612..2c9cbd2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/991ea9.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_991ea9() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl
index 3bb831a..9a96676 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b10a0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl
index 3bb831a..9a96676 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9b10a0.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b10a0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl
index 17738e4..8971fbe 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b223b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl
index 17738e4..8971fbe 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9b223b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9b223b() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl
index dcc18a9..a80f438 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_9baf27() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl
index dcc18a9..a80f438 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9baf27.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_9baf27() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl
index 50de686..f02e29b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_9c7a00() {
   uint arg_1 = 1u;
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl
index 50de686..f02e29b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9c7a00.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_9c7a00() {
   uint arg_1 = 1u;
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl
index d3b570b..9f9032d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_9cd4ca() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl
index d3b570b..9f9032d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd4ca.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_9cd4ca() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl
index 0f9f75d..fe18c70 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_9cd8ad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl
index 0f9f75d..fe18c70 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_9cd8ad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl
index aef56af..3e426ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9d0bac() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl
index aef56af..3e426ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9d0bac.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9d0bac() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl
index c701d6e..45a1529 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9dc27a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl
index c701d6e..45a1529 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9dc27a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_9dc27a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl
index ee99257..4d1f6d7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_9e0794() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl
index ee99257..4d1f6d7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9e0794.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_9e0794() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl
index 9087cfa..27bfc1d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_9fcc3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl
index 9087cfa..27bfc1d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint2 textureDimensions_9fcc3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl
index d0f64b6..69ee728 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a105a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl
index d0f64b6..69ee728 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a105a5.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a105a5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl
index c9d4718..3207a55 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_a14386() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl
index c9d4718..3207a55 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a14386.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_a14386() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl
index ac64c4b..9909d5b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a1598a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl
index ac64c4b..9909d5b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a1598a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl
index 23cce53..96d75c6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a20ba2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl
index 23cce53..96d75c6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a20ba2.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_a20ba2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl
index 4c696de..84ad460 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a25d9b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl
index 4c696de..84ad460 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a25d9b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a25d9b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl
index 84f4990..3eec7a9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_a2ba5e() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl
index 84f4990..3eec7a9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a2ba5e.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_a2ba5e() {
   int arg_1 = int(1);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl
index d271ee8..8e02ead 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a3ea91() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl
index d271ee8..8e02ead 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a3ea91.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_a3ea91() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl
index 72b25b9..3d5b623 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_a48049() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl
index 72b25b9..3d5b623 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a48049.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_a48049() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl
index f4834d3..74bd2fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_a4cd56() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl
index f4834d3..74bd2fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a4cd56.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint2 textureDimensions_a4cd56() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl
index 4150f8e..3d92573 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a65776() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl
index 4150f8e..3d92573 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a65776.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_a65776() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl
index d02454f..ceb5ea2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_aa4353() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl
index d02454f..ceb5ea2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/aa4353.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_aa4353() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl
index a69ce84..971f45f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_aac604() {
   uint arg_1 = 1u;
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl
index a69ce84..971f45f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/aac604.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_aac604() {
   uint arg_1 = 1u;
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl
index 86b2123..31324ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ae4595() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl
index 86b2123..31324ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ae4595.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ae4595() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl
index 6f40fa5..05abfa2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_af46ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl
index 6f40fa5..05abfa2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_af46ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl
index 68d1d16..5e0fde9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b16352() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl
index 68d1d16..5e0fde9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b16352.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b16352() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl
index dffd20cc..b3f4128 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b284b8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl
index dffd20cc..b3f4128 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b284b8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b284b8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl
index 3736698..7e202a5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_b3ab5e() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl
index 3736698..7e202a5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_b3ab5e() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl
index b52a913..7e3083a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_b46d97() {
   int arg_1 = int(1);
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl
index b52a913..7e3083a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b46d97.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_b46d97() {
   int arg_1 = int(1);
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl
index 3e8dad8..e45de43 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_b56112() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl
index 3e8dad8..e45de43 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b56112.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_b56112() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl
index 1461abd..6532188 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b5d68e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl
index 1461abd..6532188 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b5d68e.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b5d68e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl
index 42dfcaf..1dd834e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_b6bbf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl
index 42dfcaf..1dd834e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b6bbf4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_b6bbf4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl
index cf57cb3..4be0ca3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b8287f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl
index cf57cb3..4be0ca3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b8287f.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_b8287f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl
index 0982b1d..1a7e1a2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bb95d9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl
index 0982b1d..1a7e1a2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bb95d9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bb95d9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl
index b3b0541..bab0c63 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bbe285() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl
index b3b0541..bab0c63 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bbe285.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bbe285() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl
index 07cdf84..7dd4906 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bc96f6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl
index 07cdf84..7dd4906 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bc96f6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_bc96f6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl
index c4cb2cb..141a657 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_bd94c8() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl
index c4cb2cb..141a657 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_bd94c8() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl
index 2a96278..616e9a7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bec716() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl
index 2a96278..616e9a7 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bec716.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bec716() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl
index 232b522..7812b3d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bf9170() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl
index 232b522..7812b3d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bf9170.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint3 textureDimensions_bf9170() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl
index 78dc797..a828ae4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c1189e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl
index 78dc797..a828ae4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c1189e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c1189e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl
index a02c71d..af9a475 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c1dbf6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl
index a02c71d..af9a475 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c1dbf6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c1dbf6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl
index 35aa0f4..d0a7083 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c2cdd3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl
index 35aa0f4..d0a7083 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c2cdd3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_c2cdd3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl
index 767bf02..ffa1ab8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c44fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl
index 767bf02..ffa1ab8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c44fc1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c44fc1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl
index f2f0b84..9c044b9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_c5a36e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl
index f2f0b84..9c044b9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c5a36e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint2 textureDimensions_c5a36e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl
index 6987040..2a1dfee 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c6b44c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl
index 6987040..2a1dfee 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c6b44c.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c6b44c() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl
index 35885e3..76ab3c2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c82420() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl
index 35885e3..76ab3c2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c82420.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_c82420() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
index 9b0ae39..20e3d98 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_c871f3() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
index 9b0ae39..20e3d98 100644
--- a/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/c871f3.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_c871f3() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl
index 322c243..a0fb724 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ca10cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl
index 322c243..a0fb724 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ca10cc.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ca10cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl
index 599eeb0..26871da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_cad3b7() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl
index 599eeb0..26871da 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cad3b7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_cad3b7() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl
index ce77d4f..7ae3e4d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_cc947b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl
index ce77d4f..7ae3e4d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cc947b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_cc947b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl
index 8d0869f..c449599 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_cd3033() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl
index 8d0869f..c449599 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cd3033.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_cd3033() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl
index b63cd16..9b908fc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_cf2b50() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl
index b63cd16..9b908fc 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_cf2b50() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl
index 9b2eb1b..b282aac 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_d0778e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl
index 9b2eb1b..b282aac 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d0778e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint3 textureDimensions_d0778e() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl
index aa63828..1360c4f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d1b882() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl
index aa63828..1360c4f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d1b882.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d1b882() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl
index ff2b320..7e7651d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_d3accd() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl
index ff2b320..7e7651d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d3accd.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_d3accd() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl
index 4c6edea..2f5896d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44ac3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl
index 4c6edea..2f5896d 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d44ac3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44ac3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl
index a2f3d2f..3920b72 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44dd1() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl
index a2f3d2f..3920b72 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d44dd1.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d44dd1() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl
index 63e2d87..3a57d41 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d63c28() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl
index 63e2d87..3a57d41 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d63c28.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d63c28() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl
index c03559b..dab8ee1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d6f3cf() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl
index c03559b..dab8ee1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d6f3cf.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_d6f3cf() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl
index 6efdde7..e1f716a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d8ba68() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl
index 6efdde7..e1f716a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d8ba68.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_d8ba68() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl
index 70909c3..7bca93e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_d8f887() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl
index 70909c3..7bca93e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/d8f887.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<uint4> arg_0 : register(u0, space1);
 uint3 textureDimensions_d8f887() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl
index 21652d8..915ea63 100644
--- a/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_daf0fe() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl
index 21652d8..915ea63 100644
--- a/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/daf0fe.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint2 textureDimensions_daf0fe() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl
index 31e6abc..8c439b2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_db7131() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl
index 31e6abc..8c439b2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/db7131.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_db7131() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl
index 8100087..1593f7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dc83ce() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl
index 8100087..1593f7a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dc83ce.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dc83ce() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl
index aac1c93..d7ef66a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_deb3c0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl
index aac1c93..d7ef66a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/deb3c0.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_deb3c0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl
index 2482b6e..aa6902b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dee461() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl
index 2482b6e..aa6902b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dee461.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_dee461() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl
index 4c3702d..b91caf8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_dfdc32() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl
index 4c3702d..b91caf8 100644
--- a/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/dfdc32.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_dfdc32() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl
index e74ef0b..af50c6c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_e18a8b() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl
index e74ef0b..af50c6c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e18a8b.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_e18a8b() {
   uint arg_1 = 1u;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl
index 7d85fc3..a2de6c0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e4bfd2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl
index 7d85fc3..a2de6c0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e4bfd2.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint2 textureDimensions_e4bfd2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl
index dd9bc02..77f9205 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_e4e310() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl
index dd9bc02..77f9205 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e4e310.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_e4e310() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl
index 077a4dc..b218df6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e4f021() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl
index 077a4dc..b218df6 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e4f021.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e4f021() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl
index 2d1276a..e528e37 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e50eb8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl
index 2d1276a..e528e37 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e50eb8.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e50eb8() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
index 35e73af..1bf7608 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_e5a203() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
index 35e73af..1bf7608 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e5a203.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint3 textureDimensions_e5a203() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint3 res = v.xyz;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl
index 221cb31..3f9aaa2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_e738f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl
index 221cb31..3f9aaa2 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_e738f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl
index f7e6572..7675fc5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e824b6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl
index f7e6572..7675fc5 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e824b6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e824b6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl
index 9a640a6..9faf8ff 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e99308() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl
index 9a640a6..9faf8ff 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e99308.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_e99308() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl
index 908cc9e..c8e1020 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_eafe19() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl
index 908cc9e..c8e1020 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eafe19.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_eafe19() {
   uint arg_1 = 1u;
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl
index 64838ef..be627fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb03b1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl
index 64838ef..be627fa 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eb03b1.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb03b1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl
index e806bbe..89af911 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb10d6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl
index e806bbe..89af911 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eb10d6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb10d6() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl
index d9e27b7..a545a4b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb9f4d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl
index d9e27b7..a545a4b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/eb9f4d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint2 textureDimensions_eb9f4d() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl
index 2fa8219..44525ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ed1030() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl
index 2fa8219..44525ba 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ed1030.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<uint4> arg_0 : register(u0, space1);
 uint2 textureDimensions_ed1030() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl
index 1f77ddc..f707533 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ef2e58() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl
index 1f77ddc..f707533 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ef2e58.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<int4> arg_0 : register(u0, space1);
 uint3 textureDimensions_ef2e58() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl
index 30aec1f..a2eae25 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_f17acd() {
   int arg_1 = int(1);
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl
index 30aec1f..a2eae25 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f17acd.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint textureDimensions_f17acd() {
   int arg_1 = int(1);
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y);
   uint res = v.x;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl
index d0b75f6..a53a77f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f3a2ac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl
index d0b75f6..a53a77f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f3a2ac.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f3a2ac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl
index e3bee51..892bcdd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_f4321c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl
index e3bee51..892bcdd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f4321c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint3 textureDimensions_f4321c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl
index 3cffe28..362c4ec 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f48886() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl
index 3cffe28..362c4ec 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f48886.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f48886() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl
index 8b55a45..7b5bb65 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f4e469() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl
index 8b55a45..7b5bb65 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f4e469.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f4e469() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl
index 491f233..98b01d3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f55a94() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl
index 491f233..98b01d3 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f55a94.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f55a94() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl
index 9591a79..7cdef20 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f626b3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl
index 9591a79..7cdef20 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f626b3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f626b3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl
index 98b1f65..7632456 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f7bac5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl
index 98b1f65..7632456 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f7bac5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f7bac5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl
index 71f679f..3702f25 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f8522e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl
index 71f679f..3702f25 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f8522e.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint2 textureDimensions_f8522e() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl
index 9d3ce96..5d25fbe 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f93ece() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl
index 9d3ce96..5d25fbe 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f93ece.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture3D<float4> arg_0 : register(u0, space1);
 uint3 textureDimensions_f93ece() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint3 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl
index 412fdb7..758a34b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f94e55() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl
index 412fdb7..758a34b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f94e55.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_f94e55() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl
index abc5d60..ce95a52 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_fbb15a() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl
index abc5d60..ce95a52 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fbb15a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2D<float4> arg_0 : register(u0, space1);
 uint2 textureDimensions_fbb15a() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(v[0u], v[1u]);
+  arg_0.GetDimensions(v.x, v.y);
   uint2 res = v;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl
index 48f45f0..e4e5611 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.dxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_fdf6e9() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl
index 48f45f0..e4e5611 100644
--- a/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/fdf6e9.wgsl.expected.ir.fxc.hlsl
@@ -14,7 +14,7 @@
 uint2 textureDimensions_fdf6e9() {
   int arg_1 = int(1);
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(uint(arg_1), v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(uint(arg_1), v.x, v.y, v.z, v.w);
   uint2 res = v.xy;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl
index e34b21e..468f99b 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.dxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl
index e34b21e..468f99b 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.ir.fxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl
index b6cf9ff..428716e 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.dxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl
index b6cf9ff..428716e 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.ir.fxc.hlsl
@@ -64,10 +64,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl
index 2356182..0324a8f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_014a3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl
index 2356182..0324a8f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/014a3b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_014a3b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl
index fd30d92..5bf9449 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_071ebc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl
index fd30d92..5bf9449 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_071ebc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl
index 35f29e8..a28bd3e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_0856ae() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl
index 35f29e8..a28bd3e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0856ae.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_0856ae() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl
index c3d9af0..6b83e57 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0ec222() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl
index c3d9af0..6b83e57 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0ec222.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0ec222() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl
index 84e66ba..8cd47bd 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0fe8dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl
index 84e66ba..8cd47bd 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/0fe8dc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_0fe8dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl
index bde263c..78dfbd0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_17ccad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl
index bde263c..78dfbd0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/17ccad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_17ccad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl
index dc0f0b0..75aef19 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_1f858a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl
index dc0f0b0..75aef19 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/1f858a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_1f858a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl
index 220c2e9..ba4113f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_24d572() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl
index 220c2e9..ba4113f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/24d572.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_24d572() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl
index b2894a5..ce85070 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_26c9f9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl
index b2894a5..ce85070 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/26c9f9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_26c9f9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl
index fc5fbc8..90fc1df 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_2a48dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl
index fc5fbc8..90fc1df 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/2a48dc.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_2a48dc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl
index c49e663..761912b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_2d95ea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl
index c49e663..761912b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/2d95ea.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_2d95ea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl
index 1e8fd28..6d6fd9e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_327d70() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl
index 1e8fd28..6d6fd9e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/327d70.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_327d70() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl
index acd79a9..cb16560 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_32ca10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl
index acd79a9..cb16560 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/32ca10.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_32ca10() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl
index 781c4de..9152e04 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_3465ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl
index 781c4de..9152e04 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3465ec.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_3465ec() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl
index 6071469..3b60f31 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_34cefa() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl
index 6071469..3b60f31 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_34cefa() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl
index b98557b..a112150 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_3580ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl
index b98557b..a112150 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_3580ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl
index 8b32773..2b22915 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_379cc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl
index 8b32773..2b22915 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/379cc5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_379cc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl
index 9ffe6fe..0f3b33d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_37bc8a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl
index 9ffe6fe..0f3b33d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/37bc8a.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_37bc8a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl
index a8577b6..58572b7 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_380a60() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl
index a8577b6..58572b7 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/380a60.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_380a60() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl
index 24e2788..726491a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_3ad143() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl
index 24e2788..726491a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3ad143.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_3ad143() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl
index a3088ef..a581c3d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_3eff89() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl
index a3088ef..a581c3d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3eff89.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_3eff89() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl
index e842f1d..67d8998 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_485774() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl
index e842f1d..67d8998 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/485774.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_485774() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl
index 03c7fd3..a082c09 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLayers_48ef47() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl
index 03c7fd3..a082c09 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLayers_48ef47() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl
index a6d17f8..2eeb930 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_4adaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl
index a6d17f8..2eeb930 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4adaad.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_4adaad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl
index 4d02aac..e5d8c88 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_4c4333() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl
index 4d02aac..e5d8c88 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/4c4333.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_4c4333() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl
index dac4710..7da9683 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_520086() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl
index dac4710..7da9683 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/520086.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_520086() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl
index 6646233..8cf0461 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_52dfc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl
index 6646233..8cf0461 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/52dfc5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_52dfc5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl
index 549760b..bdab3d3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_54a654() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl
index 549760b..bdab3d3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/54a654.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_54a654() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl
index 0f8d1d7..b3964c3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_555f67() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl
index 0f8d1d7..b3964c3 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/555f67.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_555f67() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl
index 902b1ac..cbcb7c6 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_59cc27() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl
index 902b1ac..cbcb7c6 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59cc27.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_59cc27() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl
index dbebc8d..151759c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_59eb57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl
index dbebc8d..151759c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/59eb57.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_59eb57() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl
index b2881ed..58f9688 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_5ee8f2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl
index b2881ed..58f9688 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/5ee8f2.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_5ee8f2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl
index 646dc8d..a3d35e0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_5f20d1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl
index 646dc8d..a3d35e0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/5f20d1.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_5f20d1() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl
index 2785da7..e0d553b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_61bd23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl
index 2785da7..e0d553b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/61bd23.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_61bd23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl
index 428efd2..b6ba6f4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_622aa2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl
index 428efd2..b6ba6f4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/622aa2.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_622aa2() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl
index 0302160..6e558fc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_6b4321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl
index 0302160..6e558fc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_6b4321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl
index a48cab6..662b80f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_6da0eb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl
index a48cab6..662b80f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6da0eb.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_6da0eb() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl
index 40adca8..b767423 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_77be7b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl
index 40adca8..b767423 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/77be7b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_77be7b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl
index d948f27..da4a091b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_7895f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl
index d948f27..da4a091b 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7895f4.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_7895f4() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl
index f845036..b394956 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_7f28cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl
index f845036..b394956 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_7f28cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl
index 8e83757..26ce26c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8356f7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl
index 8e83757..26ce26c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8356f7.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8356f7() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl
index 0fe5d6d..7112fd6 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_878dea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl
index 0fe5d6d..7112fd6 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/878dea.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_878dea() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl
index 036e9d5..42a6330 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_87faad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl
index 036e9d5..42a6330 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/87faad.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_87faad() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl
index c5ee354..eaad58a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_8ac32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl
index c5ee354..eaad58a 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8ac32a.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_8ac32a() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl
index 33006f3..ed63fd7 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8bd987() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl
index 33006f3..ed63fd7 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8bd987.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8bd987() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl
index 8c7f6b1..d9a207d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8dbf23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl
index 8c7f6b1..d9a207d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8dbf23.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_8dbf23() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl
index 8cfa2e6..ef0f42f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8e1bd0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl
index 8cfa2e6..ef0f42f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/8e1bd0.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_8e1bd0() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl
index fdece85..9fd1739 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_90b8cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl
index fdece85..9fd1739 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/90b8cc.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_90b8cc() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl
index 6f529a9..044ae5e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_9695c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl
index 6f529a9..044ae5e 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9695c6.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<uint4> arg_0 : register(u0, space1);
 uint textureNumLayers_9695c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl
index 878814a..c88f0fc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_98a9cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl
index 878814a..c88f0fc 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/98a9cf.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_98a9cf() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl
index e9502aa..4184d5f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_9c60e3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl
index e9502aa..4184d5f 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/9c60e3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_9c60e3() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl
index ac4dba6..bc41b29 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_a54655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl
index ac4dba6..bc41b29 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a54655.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_a54655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl
index 0333842..5b82939 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLayers_a9d3f5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl
index 0333842..5b82939 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/a9d3f5.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLayers_a9d3f5() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl
index a172d3f..7819af4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_aac630() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl
index a172d3f..7819af4 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/aac630.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_aac630() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl
index 9ab6bf5..f067888 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_bf2f76() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl
index 9ab6bf5..f067888 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/bf2f76.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLayers_bf2f76() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl
index f41aad9..1fb8fe0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_c1eca9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl
index f41aad9..1fb8fe0 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_c1eca9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl
index 0dbc24b..f714bf2 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_d3e21f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl
index 0dbc24b..f714bf2 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3e21f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLayers_d3e21f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl
index 442aa59..c80f6d5 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_d3f655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl
index 442aa59..c80f6d5 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d3f655.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_d3f655() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl
index 09b778a..6798290 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_d75a0b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl
index 09b778a..6798290 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/d75a0b.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_d75a0b() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl
index 4b98062..23c40c9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_de8087() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl
index 4b98062..23c40c9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/de8087.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<int4> arg_0 : register(u0, space1);
 uint textureNumLayers_de8087() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl
index 0cbee1e..b1efd6d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_e47aac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl
index 0cbee1e..b1efd6d 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/e47aac.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 RWTexture2DArray<float4> arg_0 : register(u0, space1);
 uint textureNumLayers_e47aac() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl
index d2a9e20..19d1da9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_f1783f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl
index d2a9e20..19d1da9 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/f1783f.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLayers_f1783f() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl
index 21246da..7ed6653 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_181090() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl
index 21246da..7ed6653 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_181090() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl
index 77573f3..18524fe 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a3fa9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl
index 77573f3..18524fe 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a3fa9() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl
index f8e7ae1..ef678de 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a7fc3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl
index f8e7ae1..ef678de 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_1a7fc3() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl
index cdc6d5f..3990ce2 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_2267d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl
index cdc6d5f..3990ce2 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_2267d8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl
index c36b792..840031b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_24b2c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl
index c36b792..840031b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_24b2c6() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl
index 83c4e93..7fcb205 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLevels_2bea6c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl
index 83c4e93..7fcb205 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray arg_0 : register(t0, space1);
 uint textureNumLevels_2bea6c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl
index bdd00ee..3798da1 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_2df1ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl
index bdd00ee..3798da1 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_2df1ab() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl
index 5229ace8..cf8aa7f 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_46dbd8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl
index 5229ace8..cf8aa7f 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_46dbd8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl
index 22e1f41..8fbcc09 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_60d9b8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl
index 22e1f41..8fbcc09 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_60d9b8() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl
index 34c61d3..47cd9ac 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_903920() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl
index 34c61d3..47cd9ac 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_903920() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl
index e80cf9d..11a5203 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_9a1a65() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl
index e80cf9d..11a5203 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_9a1a65() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl
index 0aca756..99eaaf0 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_adc783() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl
index 0aca756..99eaaf0 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_adc783() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl
index 08d9ecd..6245875 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLevels_ae911c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl
index 08d9ecd..6245875 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DArray arg_0 : register(t0, space1);
 uint textureNumLevels_ae911c() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl
index 5b6d21e..602d7a1 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_c386c8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl
index 5b6d21e..602d7a1 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_c386c8() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl
index 972c802..45dacfc 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_c399f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl
index 972c802..45dacfc 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_c399f9() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl
index 31686ba..191d99b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint textureNumLevels_c8c25c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl
index 31686ba..191d99b 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCube arg_0 : register(t0, space1);
 uint textureNumLevels_c8c25c() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl
index 4b905f8..2d3c532 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint textureNumLevels_d63126() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl
index 4b905f8..2d3c532 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D arg_0 : register(t0, space1);
 uint textureNumLevels_d63126() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl
index b4d6b8d..e203c6e 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_d8f73b() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl
index b4d6b8d..e203c6e 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_d8f73b() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl
index 97c8e6d..67b2126 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_ef7944() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl
index 97c8e6d..67b2126 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture3D<float4> arg_0 : register(t0, space1);
 uint textureNumLevels_ef7944() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl
index 47b9d10..584fd39 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_efd6df() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl
index 47b9d10..584fd39 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2D<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_efd6df() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl
index 76af2c6..bbab86d 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_f742c0() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl
index 76af2c6..bbab86d 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture1D<int4> arg_0 : register(t0, space1);
 uint textureNumLevels_f742c0() {
   uint2 v = (0u).xx;
-  arg_0.GetDimensions(0u, v[0u], v[1u]);
+  arg_0.GetDimensions(0u, v.x, v.y);
   uint res = v.y;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl
index 0b5a527..d319a22 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_fe2171() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl
index 0b5a527..d319a22 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 TextureCubeArray<uint4> arg_0 : register(t0, space1);
 uint textureNumLevels_fe2171() {
   uint4 v = (0u).xxxx;
-  arg_0.GetDimensions(0u, v[0u], v[1u], v[2u], v[3u]);
+  arg_0.GetDimensions(0u, v.x, v.y, v.z, v.w);
   uint res = v.w;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl
index fa93726..5b7a818 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint textureNumSamples_50f399() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl
index fa93726..5b7a818 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<uint4> arg_0 : register(t0, space1);
 uint textureNumSamples_50f399() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl
index 887e950..31eeb42 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint textureNumSamples_c1a777() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl
index 887e950..31eeb42 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<int4> arg_0 : register(t0, space1);
 uint textureNumSamples_c1a777() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl
index fb666d7..4957460 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_dbb799() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl
index fb666d7..4957460 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_dbb799() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl
index b3a562a..51f2eb4 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.dxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_ecd321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl
index b3a562a..51f2eb4 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 Texture2DMS<float4> arg_0 : register(t0, space1);
 uint textureNumSamples_ecd321() {
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   uint res = v.z;
   return res;
 }
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl
index bc54125..2dccf00 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.dxc.hlsl
@@ -60,9 +60,9 @@
   if ((params.numPlanes == 1u)) {
     float4 v_9 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f));
     v_7 = v_9.xyz;
-    v_8 = v_9[3u];
+    v_8 = v_9.w;
   } else {
-    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f))[0u];
+    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f)).x;
     float2 v_11 = clamp(v_5, params.samplePlane1RectMin, params.samplePlane1RectMax);
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_10, plane_1.SampleLevel(tint_sampler, v_11, float(0.0f)).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
index bc54125..2dccf00 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
@@ -60,9 +60,9 @@
   if ((params.numPlanes == 1u)) {
     float4 v_9 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f));
     v_7 = v_9.xyz;
-    v_8 = v_9[3u];
+    v_8 = v_9.w;
   } else {
-    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f))[0u];
+    float v_10 = plane_0.SampleLevel(tint_sampler, v_6, float(0.0f)).x;
     float2 v_11 = clamp(v_5, params.samplePlane1RectMin, params.samplePlane1RectMax);
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_10, plane_1.SampleLevel(tint_sampler, v_11, float(0.0f)).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl
index 0fab62f..db5d092 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.dxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   float2 v = arg_2;
   uint2 v_1 = (0u).xx;
-  arg_0.GetDimensions(v_1[0u], v_1[1u]);
+  arg_0.GetDimensions(v_1.x, v_1.y);
   float2 v_2 = ((0.5f).xx / float2(v_1));
   float2 v_3 = clamp(v, v_2, ((1.0f).xx - v_2));
   float4 res = arg_0.SampleLevel(arg_1, v_3, float(0.0f));
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl
index 0fab62f..db5d092 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/9ca02c.wgsl.expected.ir.fxc.hlsl
@@ -16,7 +16,7 @@
   float2 arg_2 = (1.0f).xx;
   float2 v = arg_2;
   uint2 v_1 = (0u).xx;
-  arg_0.GetDimensions(v_1[0u], v_1[1u]);
+  arg_0.GetDimensions(v_1.x, v_1.y);
   float2 v_2 = ((0.5f).xx / float2(v_1));
   float2 v_3 = clamp(v, v_2, ((1.0f).xx - v_2));
   float4 res = arg_0.SampleLevel(arg_1, v_3, float(0.0f));
diff --git a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.dxc.hlsl b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.dxc.hlsl
index 4728f75..91a33ab 100644
--- a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.dxc.hlsl
@@ -12,7 +12,7 @@
 void textureDimensions_f60bdb() {
   int2 res = (int(0)).xx;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   res = int2(v.xy);
 }
 
diff --git a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.fxc.hlsl b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.fxc.hlsl
index 4728f75..91a33ab 100644
--- a/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/textureDimensions/depth_ms.spvasm.expected.ir.fxc.hlsl
@@ -12,7 +12,7 @@
 void textureDimensions_f60bdb() {
   int2 res = (int(0)).xx;
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   res = int2(v.xy);
 }
 
diff --git a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.dxc.hlsl b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.dxc.hlsl
index 51e26b0..70c2e86 100644
--- a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.dxc.hlsl
@@ -12,7 +12,7 @@
 void textureLoad_6273b1() {
   float res = 0.0f;
   int2 v = int2((int(0)).xx);
-  res = float4(arg_0.Load(v, int(int(1))).x, 0.0f, 0.0f, 0.0f)[0u];
+  res = float4(arg_0.Load(v, int(int(1))).x, 0.0f, 0.0f, 0.0f).x;
 }
 
 void tint_symbol_2(float4 tint_symbol) {
diff --git a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.fxc.hlsl b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.fxc.hlsl
index 51e26b0..70c2e86 100644
--- a/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/textureLoad/depth_ms.spvasm.expected.ir.fxc.hlsl
@@ -12,7 +12,7 @@
 void textureLoad_6273b1() {
   float res = 0.0f;
   int2 v = int2((int(0)).xx);
-  res = float4(arg_0.Load(v, int(int(1))).x, 0.0f, 0.0f, 0.0f)[0u];
+  res = float4(arg_0.Load(v, int(int(1))).x, 0.0f, 0.0f, 0.0f).x;
 }
 
 void tint_symbol_2(float4 tint_symbol) {
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.dxc.hlsl
index d357d2e..44c0766 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.dxc.hlsl
@@ -57,10 +57,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.fxc.hlsl
index d357d2e..44c0766 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.ir.fxc.hlsl
@@ -57,10 +57,10 @@
     int2 v_9 = int2(v_6);
     float4 v_10 = float4(plane_0.Load(int3(v_9, int(0u))));
     v_7 = v_10.xyz;
-    v_8 = v_10[3u];
+    v_8 = v_10.w;
   } else {
     int2 v_11 = int2(v_6);
-    float v_12 = float4(plane_0.Load(int3(v_11, int(0u))))[0u];
+    float v_12 = float4(plane_0.Load(int3(v_11, int(0u)))).x;
     int2 v_13 = int2(tint_v2f32_to_v2u32((v_5 * params.plane1CoordFactor)));
     v_7 = mul(params.yuvToRgbConversionMatrix, float4(v_12, float4(plane_1.Load(int3(v_13, int(0u)))).xy, 1.0f));
     v_8 = 1.0f;
diff --git a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.dxc.hlsl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.dxc.hlsl
index 312fea6..b63fe52 100644
--- a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.dxc.hlsl
@@ -12,7 +12,7 @@
 void textureNumSamples_a3c8a0() {
   int res = int(0);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   res = int(v.z);
 }
 
diff --git a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.fxc.hlsl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.fxc.hlsl
index 312fea6..b63fe52 100644
--- a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.ir.fxc.hlsl
@@ -12,7 +12,7 @@
 void textureNumSamples_a3c8a0() {
   int res = int(0);
   uint3 v = (0u).xxx;
-  arg_0.GetDimensions(v[0u], v[1u], v[2u]);
+  arg_0.GetDimensions(v.x, v.y, v.z);
   res = int(v.z);
 }
 
diff --git a/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.dxc.hlsl
index b307fac..5b95590 100644
--- a/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.dxc.hlsl
@@ -1,7 +1,7 @@
 
 float f() {
   float3 v = float3(1.0f, 2.0f, 3.0f);
-  return v[int(1)];
+  return v.y;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.fxc.hlsl
index b307fac..5b95590 100644
--- a/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/index/let/literal/vector.wgsl.expected.ir.fxc.hlsl
@@ -1,7 +1,7 @@
 
 float f() {
   float3 v = float3(1.0f, 2.0f, 3.0f);
-  return v[int(1)];
+  return v.y;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.dxc.hlsl
index bd75926..0a128c8 100644
--- a/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
 
 float f() {
   S a = (S)0;
-  return a.n[int(2)][int(1)];
+  return a.n[int(2)].y;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.fxc.hlsl
index bd75926..0a128c8 100644
--- a/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/index/let/struct_with_matrix.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
 
 float f() {
   S a = (S)0;
-  return a.n[int(2)][int(1)];
+  return a.n[int(2)].y;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.dxc.hlsl
index ca4c245..032d29f 100644
--- a/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.dxc.hlsl
@@ -6,7 +6,7 @@
 
 uint f() {
   S a = (S)0;
-  return a.n[int(2)];
+  return a.n.z;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.fxc.hlsl
index ca4c245..032d29f 100644
--- a/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/index/let/struct_with_vector.wgsl.expected.ir.fxc.hlsl
@@ -6,7 +6,7 @@
 
 uint f() {
   S a = (S)0;
-  return a.n[int(2)];
+  return a.n.z;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.dxc.hlsl
index dca3494..fbc5020 100644
--- a/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.dxc.hlsl
@@ -5,10 +5,10 @@
 
 void a() {
   int4 a_1 = (int(0)).xxxx;
-  a_1[0u] = int(1);
-  a_1[2u] = int(2);
+  a_1.x = int(1);
+  a_1.z = int(2);
   S d = (S)0;
-  d.val[int(2)][1u] = 3.0f;
+  d.val[int(2)].y = 3.0f;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.fxc.hlsl
index dca3494..fbc5020 100644
--- a/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/swizzle.wgsl.expected.ir.fxc.hlsl
@@ -5,10 +5,10 @@
 
 void a() {
   int4 a_1 = (int(0)).xxxx;
-  a_1[0u] = int(1);
-  a_1[2u] = int(2);
+  a_1.x = int(1);
+  a_1.z = int(2);
   S d = (S)0;
-  d.val[int(2)][1u] = 3.0f;
+  d.val[int(2)].y = 3.0f;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.dxc.hlsl
index c21d5af..d3814f9 100644
--- a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.dxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  P.v[0u] = float16_t(1.0h);
-  P.v[1u] = float16_t(2.0h);
-  P.v[2u] = float16_t(3.0h);
+  P.v.x = float16_t(1.0h);
+  P.v.y = float16_t(2.0h);
+  P.v.z = float16_t(3.0h);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.dxc.hlsl
index a8d000d..e3e2e13 100644
--- a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.dxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = float3(1.0f, 2.0f, 3.0f);
-  P.v[0u] = 1.0f;
-  P.v[1u] = 2.0f;
-  P.v[2u] = 3.0f;
+  P.v.x = 1.0f;
+  P.v.y = 2.0f;
+  P.v.z = 3.0f;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.fxc.hlsl
index a8d000d..e3e2e13 100644
--- a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.fxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = float3(1.0f, 2.0f, 3.0f);
-  P.v[0u] = 1.0f;
-  P.v[1u] = 2.0f;
-  P.v[2u] = 3.0f;
+  P.v.x = 1.0f;
+  P.v.y = 2.0f;
+  P.v.z = 3.0f;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.dxc.hlsl
index f0bc693..fec0a87 100644
--- a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.dxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = int3(int(1), int(2), int(3));
-  P.v[0u] = int(1);
-  P.v[1u] = int(2);
-  P.v[2u] = int(3);
+  P.v.x = int(1);
+  P.v.y = int(2);
+  P.v.z = int(3);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.fxc.hlsl
index f0bc693..fec0a87 100644
--- a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.fxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = int3(int(1), int(2), int(3));
-  P.v[0u] = int(1);
-  P.v[1u] = int(2);
-  P.v[2u] = int(3);
+  P.v.x = int(1);
+  P.v.y = int(2);
+  P.v.z = int(3);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.dxc.hlsl b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.dxc.hlsl
index a21c8a4..a2e735c 100644
--- a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.dxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = uint3(1u, 2u, 3u);
-  P.v[0u] = 1u;
-  P.v[1u] = 2u;
-  P.v[2u] = 3u;
+  P.v.x = 1u;
+  P.v.y = 2u;
+  P.v.z = 3u;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.fxc.hlsl
index a21c8a4..a2e735c 100644
--- a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.fxc.hlsl
@@ -6,9 +6,9 @@
 static S P = (S)0;
 void f() {
   P.v = uint3(1u, 2u, 3u);
-  P.v[0u] = 1u;
-  P.v[1u] = 2u;
-  P.v[2u] = 3u;
+  P.v.x = 1u;
+  P.v.y = 2u;
+  P.v.z = 3u;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl
index 6dc4598..72edcef 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,7 @@
 }
 
 void f_inner(float4 pos) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -27,7 +27,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
   pixel_local_c[v_1] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl
index 6dc4598..72edcef 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin.wgsl.expected.ir.fxc.hlsl
@@ -18,7 +18,7 @@
 }
 
 void f_inner(float4 pos) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -27,7 +27,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
   pixel_local_c[v_1] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl
index b4693e2..12f2e0f 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.dxc.hlsl
@@ -19,8 +19,8 @@
 }
 
 void f_inner(float4 pos, float4 uv) {
-  uint v = tint_f32_to_u32(pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(uv[0u]));
+  uint v = tint_f32_to_u32(pos.x);
+  uint v_1 = (v + tint_f32_to_u32(uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -29,7 +29,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.uv);
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)), inputs.uv);
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
   pixel_local_c[v_2] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl
index b4693e2..12f2e0f 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location.wgsl.expected.ir.fxc.hlsl
@@ -19,8 +19,8 @@
 }
 
 void f_inner(float4 pos, float4 uv) {
-  uint v = tint_f32_to_u32(pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(uv[0u]));
+  uint v = tint_f32_to_u32(pos.x);
+  uint v_1 = (v + tint_f32_to_u32(uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -29,7 +29,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.uv);
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)), inputs.uv);
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
   pixel_local_c[v_2] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
index 04e3f7d..f26e530 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -23,8 +23,8 @@
 }
 
 void f_inner(float4 pos, In tint_symbol) {
-  uint v = tint_f32_to_u32(pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u]));
+  uint v = tint_f32_to_u32(pos.x);
+  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -33,7 +33,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  float4 v_3 = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]));
+  float4 v_3 = float4(inputs.pos.xyz, (1.0f / inputs.pos.w));
   In v_4 = {inputs.In_uv};
   f_inner(v_3, v_4);
   pixel_local_a[v_2] = P.a.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
index 04e3f7d..f26e530 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -23,8 +23,8 @@
 }
 
 void f_inner(float4 pos, In tint_symbol) {
-  uint v = tint_f32_to_u32(pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u]));
+  uint v = tint_f32_to_u32(pos.x);
+  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -33,7 +33,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  float4 v_3 = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]));
+  float4 v_3 = float4(inputs.pos.xyz, (1.0f / inputs.pos.w));
   In v_4 = {inputs.In_uv};
   f_inner(v_3, v_4);
   pixel_local_a[v_2] = P.a.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl
index 86b5a41..95df43c 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -22,7 +22,7 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
   P.a = (P.a + v);
 }
 
@@ -31,7 +31,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
+  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w))};
   f_inner(v_2);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl
index 86b5a41..95df43c 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -22,7 +22,7 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
   P.a = (P.a + v);
 }
 
@@ -31,7 +31,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
+  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w))};
   f_inner(v_2);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl
index 284d705..002e52b 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.dxc.hlsl
@@ -23,8 +23,8 @@
 }
 
 void f_inner(In tint_symbol, float4 uv) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(uv[0u]));
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
+  uint v_1 = (v + tint_f32_to_u32(uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -33,7 +33,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
+  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w))};
   f_inner(v_3, inputs.uv);
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl
index 284d705..002e52b 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location.wgsl.expected.ir.fxc.hlsl
@@ -23,8 +23,8 @@
 }
 
 void f_inner(In tint_symbol, float4 uv) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(uv[0u]));
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
+  uint v_1 = (v + tint_f32_to_u32(uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -33,7 +33,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
+  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w))};
   f_inner(v_3, inputs.uv);
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
index e1b9950..5ccad10 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -24,8 +24,8 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u]));
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
+  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -34,7 +34,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_uv};
+  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w)), inputs.In_uv};
   f_inner(v_3);
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
index e1b9950..5ccad10 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_and_location_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -24,8 +24,8 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
-  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv[0u]));
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
+  uint v_1 = (v + tint_f32_to_u32(tint_symbol.uv.x));
   P.a = (P.a + v_1);
 }
 
@@ -34,7 +34,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_uv};
+  In v_3 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w)), inputs.In_uv};
   f_inner(v_3);
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl
index 2baeb4b..72b51cc 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.dxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
   P.a = (P.a + v);
 }
 
@@ -35,7 +35,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_ff, inputs.In_si};
+  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w)), inputs.In_ff, inputs.In_si};
   f_inner(v_2);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl
index 2baeb4b..72b51cc 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_in_struct_multiple.wgsl.expected.ir.fxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
   P.a = (P.a + v);
 }
 
@@ -35,7 +35,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_ff, inputs.In_si};
+  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w)), inputs.In_ff, inputs.In_si};
   f_inner(v_2);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl
index 13e9667..eb81b76 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.dxc.hlsl
@@ -20,7 +20,7 @@
 }
 
 void f_inner(float4 pos, bool ff, uint si) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -29,7 +29,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.ff, inputs.si);
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)), inputs.ff, inputs.si);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
   pixel_local_c[v_1] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl
index 13e9667..eb81b76 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple.wgsl.expected.ir.fxc.hlsl
@@ -20,7 +20,7 @@
 }
 
 void f_inner(float4 pos, bool ff, uint si) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -29,7 +29,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.ff, inputs.si);
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)), inputs.ff, inputs.si);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
   pixel_local_c[v_1] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl
index e2dd2e2..0449726 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.dxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 void f_inner(float4 pos) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -35,12 +35,12 @@
 }
 
 void f2_inner(float4 pos) {
-  int v_1 = tint_f32_to_i32(pos[0u]);
+  int v_1 = tint_f32_to_i32(pos.x);
   P.b = (P.b + v_1);
 }
 
 void f3_inner(float4 pos) {
-  P.c = (P.c + pos[0u]);
+  P.c = (P.c + pos.x);
 }
 
 void f(f_inputs inputs) {
@@ -48,7 +48,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
   pixel_local_c[v_2] = P.c.xxxx;
@@ -59,7 +59,7 @@
   P.a = pixel_local_a.Load(v_3).x;
   P.b = pixel_local_b.Load(v_3).x;
   P.c = pixel_local_c.Load(v_3).x;
-  f2_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f2_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_3] = P.a.xxxx;
   pixel_local_b[v_3] = P.b.xxxx;
   pixel_local_c[v_3] = P.c.xxxx;
@@ -70,7 +70,7 @@
   P.a = pixel_local_a.Load(v_4).x;
   P.b = pixel_local_b.Load(v_4).x;
   P.c = pixel_local_c.Load(v_4).x;
-  f3_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f3_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_4] = P.a.xxxx;
   pixel_local_b[v_4] = P.b.xxxx;
   pixel_local_c[v_4] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl
index e2dd2e2..0449726 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/builtin_multiple_entry_points.wgsl.expected.ir.fxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 void f_inner(float4 pos) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -35,12 +35,12 @@
 }
 
 void f2_inner(float4 pos) {
-  int v_1 = tint_f32_to_i32(pos[0u]);
+  int v_1 = tint_f32_to_i32(pos.x);
   P.b = (P.b + v_1);
 }
 
 void f3_inner(float4 pos) {
-  P.c = (P.c + pos[0u]);
+  P.c = (P.c + pos.x);
 }
 
 void f(f_inputs inputs) {
@@ -48,7 +48,7 @@
   P.a = pixel_local_a.Load(v_2).x;
   P.b = pixel_local_b.Load(v_2).x;
   P.c = pixel_local_c.Load(v_2).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_2] = P.a.xxxx;
   pixel_local_b[v_2] = P.b.xxxx;
   pixel_local_c[v_2] = P.c.xxxx;
@@ -59,7 +59,7 @@
   P.a = pixel_local_a.Load(v_3).x;
   P.b = pixel_local_b.Load(v_3).x;
   P.c = pixel_local_c.Load(v_3).x;
-  f2_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f2_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_3] = P.a.xxxx;
   pixel_local_b[v_3] = P.b.xxxx;
   pixel_local_c[v_3] = P.c.xxxx;
@@ -70,7 +70,7 @@
   P.a = pixel_local_a.Load(v_4).x;
   P.b = pixel_local_b.Load(v_4).x;
   P.c = pixel_local_c.Load(v_4).x;
-  f3_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f3_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_4] = P.a.xxxx;
   pixel_local_b[v_4] = P.b.xxxx;
   pixel_local_c[v_4] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl
index 985615e..1353cc8 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,7 @@
 }
 
 void f_inner(float4 pos) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -27,7 +27,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
   pixel_local_c[v_1] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl
index 985615e..1353cc8 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin.wgsl.expected.ir.fxc.hlsl
@@ -18,7 +18,7 @@
 }
 
 void f_inner(float4 pos) {
-  uint v = tint_f32_to_u32(pos[0u]);
+  uint v = tint_f32_to_u32(pos.x);
   P.a = (P.a + v);
 }
 
@@ -27,7 +27,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
+  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos.w)));
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
   pixel_local_c[v_1] = P.c.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl
index 198bd7a..4afed9f 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -22,7 +22,7 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
   P.a = (P.a + v);
 }
 
@@ -31,7 +31,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
+  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w))};
   f_inner(v_2);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl
index 198bd7a..4afed9f 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/invariant_builtin_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -22,7 +22,7 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.pos[0u]);
+  uint v = tint_f32_to_u32(tint_symbol.pos.x);
   P.a = (P.a + v);
 }
 
@@ -31,7 +31,7 @@
   P.a = pixel_local_a.Load(v_1).x;
   P.b = pixel_local_b.Load(v_1).x;
   P.c = pixel_local_c.Load(v_1).x;
-  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
+  In v_2 = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos.w))};
   f_inner(v_2);
   pixel_local_a[v_1] = P.a.xxxx;
   pixel_local_b[v_1] = P.b.xxxx;
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl
index 3c70bd6..d824fe0 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.dxc.hlsl
@@ -20,8 +20,8 @@
 }
 
 void f_inner(float4 a, float4 b) {
-  uint v = tint_f32_to_u32(a[0u]);
-  uint v_1 = (v + tint_f32_to_u32(b[1u]));
+  uint v = tint_f32_to_u32(a.x);
+  uint v_1 = (v + tint_f32_to_u32(b.y));
   P.a = (P.a + v_1);
 }
 
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl
index 3c70bd6..d824fe0 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location.wgsl.expected.ir.fxc.hlsl
@@ -20,8 +20,8 @@
 }
 
 void f_inner(float4 a, float4 b) {
-  uint v = tint_f32_to_u32(a[0u]);
-  uint v_1 = (v + tint_f32_to_u32(b[1u]));
+  uint v = tint_f32_to_u32(a.x);
+  uint v_1 = (v + tint_f32_to_u32(b.y));
   P.a = (P.a + v_1);
 }
 
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl
index f19ea10..3f010a9 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.dxc.hlsl
@@ -25,8 +25,8 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.a[0u]);
-  uint v_1 = (v + tint_f32_to_u32(tint_symbol.b[1u]));
+  uint v = tint_f32_to_u32(tint_symbol.a.x);
+  uint v_1 = (v + tint_f32_to_u32(tint_symbol.b.y));
   P.a = (P.a + v_1);
 }
 
diff --git a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl
index f19ea10..3f010a9 100644
--- a/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/pixel_local/entry_point_use/additional_params/location_in_struct.wgsl.expected.ir.fxc.hlsl
@@ -25,8 +25,8 @@
 }
 
 void f_inner(In tint_symbol) {
-  uint v = tint_f32_to_u32(tint_symbol.a[0u]);
-  uint v_1 = (v + tint_f32_to_u32(tint_symbol.b[1u]));
+  uint v = tint_f32_to_u32(tint_symbol.a.x);
+  uint v_1 = (v + tint_f32_to_u32(tint_symbol.b.y));
   P.a = (P.a + v_1);
 }
 
diff --git a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl
index 7577f65..cd78c24 100644
--- a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.dxc.hlsl
@@ -1,22 +1,22 @@
 
 void deref() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 void no_deref() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 void deref_inc() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(1));
+  a.x = (a.x + int(1));
 }
 
 void no_deref_inc() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(1));
+  a.x = (a.x + int(1));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.fxc.hlsl b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.fxc.hlsl
index 7577f65..cd78c24 100644
--- a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.fxc.hlsl
@@ -1,22 +1,22 @@
 
 void deref() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 void no_deref() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 void deref_inc() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(1));
+  a.x = (a.x + int(1));
 }
 
 void no_deref_inc() {
   int3 a = (int(0)).xxx;
-  a[int(0)] = (a.x + int(1));
+  a.x = (a.x + int(1));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl
index 3a99d9b..ff87eab 100644
--- a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.dxc.hlsl
@@ -1,12 +1,12 @@
 
 void deref() {
   int3 a = (int(0)).xxx;
-  a[0u] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 void no_deref() {
   int3 a = (int(0)).xxx;
-  a[0u] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.fxc.hlsl b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.fxc.hlsl
index 3a99d9b..ff87eab 100644
--- a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.fxc.hlsl
@@ -1,12 +1,12 @@
 
 void deref() {
   int3 a = (int(0)).xxx;
-  a[0u] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 void no_deref() {
   int3 a = (int(0)).xxx;
-  a[0u] = (a.x + int(42));
+  a.x = (a.x + int(42));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl
index 1eaa143..6b8b321 100644
--- a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.dxc.hlsl
@@ -2,41 +2,41 @@
 void deref_const() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void no_deref_const() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void deref_let() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void no_deref_let() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void deref_var() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void no_deref_var() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.fxc.hlsl b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.fxc.hlsl
index 1eaa143..6b8b321 100644
--- a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.fxc.hlsl
@@ -2,41 +2,41 @@
 void deref_const() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void no_deref_const() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void deref_let() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void no_deref_let() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void deref_var() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 void no_deref_var() {
   int3 a = (int(0)).xxx;
   int i = int(0);
   int b = a[i];
-  a[int(0)] = int(42);
+  a.x = int(42);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl
index 637284e..4a990c5 100644
--- a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.dxc.hlsl
@@ -2,13 +2,13 @@
 void deref() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[0u] = int(42);
+  a.x = int(42);
 }
 
 void no_deref() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[0u] = int(42);
+  a.x = int(42);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.fxc.hlsl b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.fxc.hlsl
index 637284e..4a990c5 100644
--- a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.fxc.hlsl
@@ -2,13 +2,13 @@
 void deref() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[0u] = int(42);
+  a.x = int(42);
 }
 
 void no_deref() {
   int3 a = (int(0)).xxx;
   int b = a.x;
-  a[0u] = int(42);
+  a.x = int(42);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/samples/compute_boids.wgsl.expected.ir.dxc.hlsl b/test/tint/samples/compute_boids.wgsl.expected.ir.dxc.hlsl
index 727fd40..924a182 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.ir.dxc.hlsl
@@ -23,11 +23,11 @@
 RWByteAddressBuffer particlesA : register(u1);
 RWByteAddressBuffer particlesB : register(u2);
 float4 vert_main_inner(float2 a_particlePos, float2 a_particleVel, float2 a_pos) {
-  float angle = -(atan2(a_particleVel[0u], a_particleVel[1u]));
-  float v = (a_pos[0u] * cos(angle));
-  float v_1 = (v - (a_pos[1u] * sin(angle)));
-  float v_2 = (a_pos[0u] * sin(angle));
-  float2 pos = float2(v_1, (v_2 + (a_pos[1u] * cos(angle))));
+  float angle = -(atan2(a_particleVel.x, a_particleVel.y));
+  float v = (a_pos.x * cos(angle));
+  float v_1 = (v - (a_pos.y * sin(angle)));
+  float v_2 = (a_pos.x * sin(angle));
+  float2 pos = float2(v_1, (v_2 + (a_pos.y * cos(angle))));
   return float4((pos + a_particlePos), 0.0f, 1.0f);
 }
 
@@ -36,7 +36,7 @@
 }
 
 void comp_main_inner(uint3 gl_GlobalInvocationID) {
-  uint index = gl_GlobalInvocationID[0u];
+  uint index = gl_GlobalInvocationID.x;
   if ((index >= 5u)) {
     return;
   }
@@ -108,16 +108,16 @@
   float2 v_19 = vVel;
   vPos = (v_18 + (v_19 * asfloat(params[0u].x)));
   if ((vPos.x < -1.0f)) {
-    vPos[0u] = 1.0f;
+    vPos.x = 1.0f;
   }
   if ((vPos.x > 1.0f)) {
-    vPos[0u] = -1.0f;
+    vPos.x = -1.0f;
   }
   if ((vPos.y < -1.0f)) {
-    vPos[1u] = 1.0f;
+    vPos.y = 1.0f;
   }
   if ((vPos.y > 1.0f)) {
-    vPos[1u] = -1.0f;
+    vPos.y = -1.0f;
   }
   uint v_20 = (uint(index) * 16u);
   particlesB.Store2((0u + v_20), asuint(vPos));
diff --git a/test/tint/samples/compute_boids.wgsl.expected.ir.fxc.hlsl b/test/tint/samples/compute_boids.wgsl.expected.ir.fxc.hlsl
index 727fd40..924a182 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.ir.fxc.hlsl
@@ -23,11 +23,11 @@
 RWByteAddressBuffer particlesA : register(u1);
 RWByteAddressBuffer particlesB : register(u2);
 float4 vert_main_inner(float2 a_particlePos, float2 a_particleVel, float2 a_pos) {
-  float angle = -(atan2(a_particleVel[0u], a_particleVel[1u]));
-  float v = (a_pos[0u] * cos(angle));
-  float v_1 = (v - (a_pos[1u] * sin(angle)));
-  float v_2 = (a_pos[0u] * sin(angle));
-  float2 pos = float2(v_1, (v_2 + (a_pos[1u] * cos(angle))));
+  float angle = -(atan2(a_particleVel.x, a_particleVel.y));
+  float v = (a_pos.x * cos(angle));
+  float v_1 = (v - (a_pos.y * sin(angle)));
+  float v_2 = (a_pos.x * sin(angle));
+  float2 pos = float2(v_1, (v_2 + (a_pos.y * cos(angle))));
   return float4((pos + a_particlePos), 0.0f, 1.0f);
 }
 
@@ -36,7 +36,7 @@
 }
 
 void comp_main_inner(uint3 gl_GlobalInvocationID) {
-  uint index = gl_GlobalInvocationID[0u];
+  uint index = gl_GlobalInvocationID.x;
   if ((index >= 5u)) {
     return;
   }
@@ -108,16 +108,16 @@
   float2 v_19 = vVel;
   vPos = (v_18 + (v_19 * asfloat(params[0u].x)));
   if ((vPos.x < -1.0f)) {
-    vPos[0u] = 1.0f;
+    vPos.x = 1.0f;
   }
   if ((vPos.x > 1.0f)) {
-    vPos[0u] = -1.0f;
+    vPos.x = -1.0f;
   }
   if ((vPos.y < -1.0f)) {
-    vPos[1u] = 1.0f;
+    vPos.y = 1.0f;
   }
   if ((vPos.y > 1.0f)) {
-    vPos[1u] = -1.0f;
+    vPos.y = -1.0f;
   }
   uint v_20 = (uint(index) * 16u);
   particlesB.Store2((0u + v_20), asuint(vPos));
diff --git a/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl b/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl
index 7ed4a57..44c3a04 100644
--- a/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.dxc.hlsl
@@ -20,7 +20,7 @@
   if ((tint_symbol == 0.0f)) {
     continue_execution = false;
   }
-  int result = tint_f32_to_i32(t.Sample(s, coord)[0u]);
+  int result = tint_f32_to_i32(t.Sample(s, coord).x);
   {
     int i = int(0);
     while(true) {
diff --git a/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl
index 7ed4a57..44c3a04 100644
--- a/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/discard/atomic_in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl
@@ -20,7 +20,7 @@
   if ((tint_symbol == 0.0f)) {
     continue_execution = false;
   }
-  int result = tint_f32_to_i32(t.Sample(s, coord)[0u]);
+  int result = tint_f32_to_i32(t.Sample(s, coord).x);
   {
     int i = int(0);
     while(true) {
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl
index 127819c..748dec6 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl
@@ -10,7 +10,7 @@
   uint4 tint_num_workgroups[1];
 };
 void main_inner(uint3 local_invocation_id, uint local_invocation_index, uint3 global_invocation_id, uint3 workgroup_id, uint3 num_workgroups) {
-  uint foo = ((((local_invocation_id[0u] + local_invocation_index) + global_invocation_id[0u]) + workgroup_id[0u]) + num_workgroups[0u]);
+  uint foo = ((((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x) + num_workgroups.x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl
index 127819c..748dec6 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl
@@ -10,7 +10,7 @@
   uint4 tint_num_workgroups[1];
 };
 void main_inner(uint3 local_invocation_id, uint local_invocation_index, uint3 global_invocation_id, uint3 workgroup_id, uint3 num_workgroups) {
-  uint foo = ((((local_invocation_id[0u] + local_invocation_index) + global_invocation_id[0u]) + workgroup_id[0u]) + num_workgroups[0u]);
+  uint foo = ((((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x) + num_workgroups.x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
index 8c73304..47eb025 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
@@ -18,7 +18,7 @@
   uint4 tint_num_workgroups[1];
 };
 void main_inner(ComputeInputs inputs) {
-  uint foo = ((((inputs.local_invocation_id[0u] + inputs.local_invocation_index) + inputs.global_invocation_id[0u]) + inputs.workgroup_id[0u]) + inputs.num_workgroups[0u]);
+  uint foo = ((((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x) + inputs.num_workgroups.x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
index 8c73304..47eb025 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
@@ -18,7 +18,7 @@
   uint4 tint_num_workgroups[1];
 };
 void main_inner(ComputeInputs inputs) {
-  uint foo = ((((inputs.local_invocation_id[0u] + inputs.local_invocation_index) + inputs.global_invocation_id[0u]) + inputs.workgroup_id[0u]) + inputs.num_workgroups[0u]);
+  uint foo = ((((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x) + inputs.num_workgroups.x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.dxc.hlsl
index af94735..6e794c8 100644
--- a/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.dxc.hlsl
@@ -15,7 +15,7 @@
 
 
 void main_inner(ComputeInputs0 inputs0, uint local_invocation_index, uint3 global_invocation_id, ComputeInputs1 inputs1) {
-  uint foo = (((inputs0.local_invocation_id[0u] + local_invocation_index) + global_invocation_id[0u]) + inputs1.workgroup_id[0u]);
+  uint foo = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.fxc.hlsl
index af94735..6e794c8 100644
--- a/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.fxc.hlsl
@@ -15,7 +15,7 @@
 
 
 void main_inner(ComputeInputs0 inputs0, uint local_invocation_index, uint3 global_invocation_id, ComputeInputs1 inputs1) {
-  uint foo = (((inputs0.local_invocation_id[0u] + local_invocation_index) + global_invocation_id[0u]) + inputs1.workgroup_id[0u]);
+  uint foo = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.dxc.hlsl
index b36ba34..050a841 100644
--- a/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.dxc.hlsl
@@ -14,6 +14,6 @@
 }
 
 void main(main_inputs inputs) {
-  main_inner(float4(inputs.position.xyz, (1.0f / inputs.position[3u])), inputs.front_facing, inputs.sample_index, inputs.sample_mask);
+  main_inner(float4(inputs.position.xyz, (1.0f / inputs.position.w)), inputs.front_facing, inputs.sample_index, inputs.sample_mask);
 }
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.fxc.hlsl
index b36ba34..050a841 100644
--- a/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_builtins.wgsl.expected.ir.fxc.hlsl
@@ -14,6 +14,6 @@
 }
 
 void main(main_inputs inputs) {
-  main_inner(float4(inputs.position.xyz, (1.0f / inputs.position[3u])), inputs.front_facing, inputs.sample_index, inputs.sample_mask);
+  main_inner(float4(inputs.position.xyz, (1.0f / inputs.position.w)), inputs.front_facing, inputs.sample_index, inputs.sample_mask);
 }
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
index 38559be..238d778 100644
--- a/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
@@ -21,7 +21,7 @@
 }
 
 void main(main_inputs inputs) {
-  FragmentInputs v = {float4(inputs.FragmentInputs_position.xyz, (1.0f / inputs.FragmentInputs_position[3u])), inputs.FragmentInputs_front_facing, inputs.FragmentInputs_sample_index, inputs.FragmentInputs_sample_mask};
+  FragmentInputs v = {float4(inputs.FragmentInputs_position.xyz, (1.0f / inputs.FragmentInputs_position.w)), inputs.FragmentInputs_front_facing, inputs.FragmentInputs_sample_index, inputs.FragmentInputs_sample_mask};
   main_inner(v);
 }
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
index 38559be..238d778 100644
--- a/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
@@ -21,7 +21,7 @@
 }
 
 void main(main_inputs inputs) {
-  FragmentInputs v = {float4(inputs.FragmentInputs_position.xyz, (1.0f / inputs.FragmentInputs_position[3u])), inputs.FragmentInputs_front_facing, inputs.FragmentInputs_sample_index, inputs.FragmentInputs_sample_mask};
+  FragmentInputs v = {float4(inputs.FragmentInputs_position.xyz, (1.0f / inputs.FragmentInputs_position.w)), inputs.FragmentInputs_front_facing, inputs.FragmentInputs_sample_index, inputs.FragmentInputs_sample_mask};
   main_inner(v);
 }
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.dxc.hlsl
index f3e130b..099556c 100644
--- a/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.dxc.hlsl
@@ -32,7 +32,7 @@
 }
 
 void main(main_inputs inputs) {
-  FragmentInputs0 v_1 = {float4(inputs.FragmentInputs0_position.xyz, (1.0f / inputs.FragmentInputs0_position[3u])), inputs.FragmentInputs0_loc0};
+  FragmentInputs0 v_1 = {float4(inputs.FragmentInputs0_position.xyz, (1.0f / inputs.FragmentInputs0_position.w)), inputs.FragmentInputs0_loc0};
   FragmentInputs1 v_2 = {inputs.FragmentInputs1_loc3, inputs.FragmentInputs1_sample_mask};
   main_inner(v_1, inputs.front_facing, inputs.loc1, inputs.sample_index, v_2, inputs.loc2);
 }
diff --git a/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.fxc.hlsl
index f3e130b..099556c 100644
--- a/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_mixed.wgsl.expected.ir.fxc.hlsl
@@ -32,7 +32,7 @@
 }
 
 void main(main_inputs inputs) {
-  FragmentInputs0 v_1 = {float4(inputs.FragmentInputs0_position.xyz, (1.0f / inputs.FragmentInputs0_position[3u])), inputs.FragmentInputs0_loc0};
+  FragmentInputs0 v_1 = {float4(inputs.FragmentInputs0_position.xyz, (1.0f / inputs.FragmentInputs0_position.w)), inputs.FragmentInputs0_loc0};
   FragmentInputs1 v_2 = {inputs.FragmentInputs1_loc3, inputs.FragmentInputs1_sample_mask};
   main_inner(v_1, inputs.front_facing, inputs.loc1, inputs.sample_index, v_2, inputs.loc2);
 }
diff --git a/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.dxc.hlsl
index 812ffed..ec8785c 100644
--- a/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.dxc.hlsl
@@ -37,7 +37,7 @@
 }
 
 void main(main_inputs inputs) {
-  FragmentInputs0 v_1 = {float4(inputs.FragmentInputs0_position.xyz, (1.0f / inputs.FragmentInputs0_position[3u])), inputs.FragmentInputs0_loc0};
+  FragmentInputs0 v_1 = {float4(inputs.FragmentInputs0_position.xyz, (1.0f / inputs.FragmentInputs0_position.w)), inputs.FragmentInputs0_loc0};
   FragmentInputs1 v_2 = {inputs.FragmentInputs1_loc3, inputs.FragmentInputs1_loc5, inputs.FragmentInputs1_sample_mask};
   main_inner(v_1, inputs.front_facing, inputs.loc1, inputs.sample_index, v_2, inputs.loc2, inputs.loc4);
 }
diff --git a/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.dxc.hlsl
index 854e100..d26267a 100644
--- a/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.dxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 frag_main_outputs frag_main(frag_main_inputs inputs) {
-  Interface v_3 = {inputs.Interface_i, inputs.Interface_u, inputs.Interface_vi, inputs.Interface_vu, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u]))};
+  Interface v_3 = {inputs.Interface_i, inputs.Interface_u, inputs.Interface_vi, inputs.Interface_vu, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w))};
   frag_main_outputs v_4 = {frag_main_inner(v_3)};
   return v_4;
 }
diff --git a/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.fxc.hlsl
index 854e100..d26267a 100644
--- a/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/interpolate_integers.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 frag_main_outputs frag_main(frag_main_inputs inputs) {
-  Interface v_3 = {inputs.Interface_i, inputs.Interface_u, inputs.Interface_vi, inputs.Interface_vu, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u]))};
+  Interface v_3 = {inputs.Interface_i, inputs.Interface_u, inputs.Interface_vi, inputs.Interface_vu, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w))};
   frag_main_outputs v_4 = {frag_main_inner(v_3)};
   return v_4;
 }
diff --git a/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.dxc.hlsl
index d2f69f1..2bf3485 100644
--- a/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.dxc.hlsl
@@ -34,7 +34,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  Interface v_3 = {inputs.Interface_col1, inputs.Interface_col2, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u]))};
+  Interface v_3 = {inputs.Interface_col1, inputs.Interface_col2, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w))};
   frag_main_inner(v_3);
 }
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.fxc.hlsl
index d2f69f1..2bf3485 100644
--- a/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_different_stages.wgsl.expected.ir.fxc.hlsl
@@ -34,7 +34,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  Interface v_3 = {inputs.Interface_col1, inputs.Interface_col2, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u]))};
+  Interface v_3 = {inputs.Interface_col1, inputs.Interface_col2, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w))};
   frag_main_inner(v_3);
 }
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.dxc.hlsl
index abeacbf..3cae578 100644
--- a/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.dxc.hlsl
@@ -34,7 +34,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  Interface v_3 = {inputs.Interface_col1, inputs.Interface_col2, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos[3u]))};
+  Interface v_3 = {inputs.Interface_col1, inputs.Interface_col2, float4(inputs.Interface_pos.xyz, (1.0f / inputs.Interface_pos.w))};
   frag_main_inner(v_3);
 }
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.dxc.hlsl
index 4f05c25..9c41119 100644
--- a/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.dxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  S v_2 = {inputs.S_f, inputs.S_u, float4(inputs.S_v.xyz, (1.0f / inputs.S_v[3u]))};
+  S v_2 = {inputs.S_f, inputs.S_u, float4(inputs.S_v.xyz, (1.0f / inputs.S_v.w))};
   frag_main_inner(v_2);
 }
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.fxc.hlsl
index 4f05c25..9c41119 100644
--- a/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_storage_buffer.wgsl.expected.ir.fxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  S v_2 = {inputs.S_f, inputs.S_u, float4(inputs.S_v.xyz, (1.0f / inputs.S_v[3u]))};
+  S v_2 = {inputs.S_f, inputs.S_u, float4(inputs.S_v.xyz, (1.0f / inputs.S_v.w))};
   frag_main_inner(v_2);
 }
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.dxc.hlsl
index 89ad776..570d4cc 100644
--- a/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.dxc.hlsl
@@ -34,7 +34,7 @@
 }
 
 void frag_main(frag_main_inputs inputs) {
-  S v_2 = {inputs.S_f, inputs.S_u, float4(inputs.S_v.xyz, (1.0f / inputs.S_v[3u])), inputs.S_x, inputs.S_y};
+  S v_2 = {inputs.S_f, inputs.S_u, float4(inputs.S_v.xyz, (1.0f / inputs.S_v.w)), inputs.S_x, inputs.S_y};
   frag_main_inner(v_2);
 }
 
diff --git a/test/tint/types/texture/depth/2d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/depth/2d.wgsl.expected.ir.dxc.hlsl
index c059c8b6..a96ae57 100644
--- a/test/tint/types/texture/depth/2d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/depth/2d.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/2d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/depth/2d.wgsl.expected.ir.fxc.hlsl
index c059c8b6..a96ae57 100644
--- a/test/tint/types/texture/depth/2d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/depth/2d.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.dxc.hlsl
index 885def8..315994f 100644
--- a/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z, v.w);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.fxc.hlsl
index 885def8..315994f 100644
--- a/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/depth/2d_array.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z, v.w);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/cube.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/depth/cube.wgsl.expected.ir.dxc.hlsl
index d5df8cb..a8813a1 100644
--- a/test/tint/types/texture/depth/cube.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/depth/cube.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/cube.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/depth/cube.wgsl.expected.ir.fxc.hlsl
index d5df8cb..a8813a1 100644
--- a/test/tint/types/texture/depth/cube.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/depth/cube.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.dxc.hlsl
index cae8381..d9eb7bb 100644
--- a/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.dxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z, v.w);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.fxc.hlsl
index cae8381..d9eb7bb 100644
--- a/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/depth/cube_array.wgsl.expected.ir.fxc.hlsl
@@ -3,7 +3,7 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(0)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(0)), v.x, v.y, v.z, v.w);
   uint2 dims = v.xy;
 }
 
diff --git a/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.dxc.hlsl
index 1ff7a9b..9883c62 100644
--- a/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(v.x, v.y, v.z);
   uint2 fdims = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_i.GetDimensions(v_1[0u], v_1[1u], v_1[2u]);
+  t_i.GetDimensions(v_1.x, v_1.y, v_1.z);
   uint2 idims = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_u.GetDimensions(v_2[0u], v_2[1u], v_2[2u]);
+  t_u.GetDimensions(v_2.x, v_2.y, v_2.z);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.fxc.hlsl
index 1ff7a9b..9883c62 100644
--- a/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/multisampled/2d.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(v.x, v.y, v.z);
   uint2 fdims = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_i.GetDimensions(v_1[0u], v_1[1u], v_1[2u]);
+  t_i.GetDimensions(v_1.x, v_1.y, v_1.z);
   uint2 idims = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_u.GetDimensions(v_2[0u], v_2[1u], v_2[2u]);
+  t_u.GetDimensions(v_2.x, v_2.y, v_2.z);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/1d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/1d.wgsl.expected.ir.dxc.hlsl
index 6aa533a..082a71b 100644
--- a/test/tint/types/texture/sampled/1d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/1d.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint2 v = (0u).xx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y);
   uint fdims = v.x;
   uint2 v_1 = (0u).xx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y);
   uint idims = v_1.x;
   uint2 v_2 = (0u).xx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y);
   uint udims = v_2.x;
 }
 
diff --git a/test/tint/types/texture/sampled/1d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/1d.wgsl.expected.ir.fxc.hlsl
index 6aa533a..082a71b 100644
--- a/test/tint/types/texture/sampled/1d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/1d.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint2 v = (0u).xx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y);
   uint fdims = v.x;
   uint2 v_1 = (0u).xx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y);
   uint idims = v_1.x;
   uint2 v_2 = (0u).xx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y);
   uint udims = v_2.x;
 }
 
diff --git a/test/tint/types/texture/sampled/2d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/2d.wgsl.expected.ir.dxc.hlsl
index b015a5b..3822640 100644
--- a/test/tint/types/texture/sampled/2d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/2d.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 fdims = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z);
   uint2 idims = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/2d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/2d.wgsl.expected.ir.fxc.hlsl
index b015a5b..3822640 100644
--- a/test/tint/types/texture/sampled/2d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/2d.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 fdims = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z);
   uint2 idims = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.dxc.hlsl
index 11eb1e3..79e8448 100644
--- a/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 fdims = v.xy;
   uint4 v_1 = (0u).xxxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z, v_1.w);
   uint2 idims = v_1.xy;
   uint4 v_2 = (0u).xxxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u], v_2[3u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z, v_2.w);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.fxc.hlsl
index 11eb1e3..79e8448 100644
--- a/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/2d_array.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 fdims = v.xy;
   uint4 v_1 = (0u).xxxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z, v_1.w);
   uint2 idims = v_1.xy;
   uint4 v_2 = (0u).xxxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u], v_2[3u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z, v_2.w);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl
index 6f6a820..baf6250 100644
--- a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 fdims = v.xyz;
   uint4 v_1 = (0u).xxxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z, v_1.w);
   uint3 idims = v_1.xyz;
   uint4 v_2 = (0u).xxxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u], v_2[3u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z, v_2.w);
   uint3 udims = v_2.xyz;
 }
 
diff --git a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl
index 6f6a820..baf6250 100644
--- a/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/3d.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint3 fdims = v.xyz;
   uint4 v_1 = (0u).xxxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z, v_1.w);
   uint3 idims = v_1.xyz;
   uint4 v_2 = (0u).xxxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u], v_2[3u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z, v_2.w);
   uint3 udims = v_2.xyz;
 }
 
diff --git a/test/tint/types/texture/sampled/cube.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/cube.wgsl.expected.ir.dxc.hlsl
index e484c5c..a480066 100644
--- a/test/tint/types/texture/sampled/cube.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/cube.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 fdims = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z);
   uint2 idims = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/cube.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/cube.wgsl.expected.ir.fxc.hlsl
index e484c5c..a480066 100644
--- a/test/tint/types/texture/sampled/cube.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/cube.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z);
   uint2 fdims = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z);
   uint2 idims = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.dxc.hlsl
index 18a54b3..5fe31ca 100644
--- a/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.dxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 fdims = v.xy;
   uint4 v_1 = (0u).xxxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z, v_1.w);
   uint2 idims = v_1.xy;
   uint4 v_2 = (0u).xxxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u], v_2[3u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z, v_2.w);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.fxc.hlsl
index 18a54b3..5fe31ca 100644
--- a/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/sampled/cube_array.wgsl.expected.ir.fxc.hlsl
@@ -5,13 +5,13 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint4 v = (0u).xxxx;
-  t_f.GetDimensions(uint(int(1)), v[0u], v[1u], v[2u], v[3u]);
+  t_f.GetDimensions(uint(int(1)), v.x, v.y, v.z, v.w);
   uint2 fdims = v.xy;
   uint4 v_1 = (0u).xxxx;
-  t_i.GetDimensions(uint(int(1)), v_1[0u], v_1[1u], v_1[2u], v_1[3u]);
+  t_i.GetDimensions(uint(int(1)), v_1.x, v_1.y, v_1.z, v_1.w);
   uint2 idims = v_1.xy;
   uint4 v_2 = (0u).xxxx;
-  t_u.GetDimensions(uint(int(1)), v_2[0u], v_2[1u], v_2[2u], v_2[3u]);
+  t_u.GetDimensions(uint(int(1)), v_2.x, v_2.y, v_2.z, v_2.w);
   uint2 udims = v_2.xy;
 }
 
diff --git a/test/tint/types/texture/storage/2d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/storage/2d.wgsl.expected.ir.dxc.hlsl
index 643c740..3ee334b 100644
--- a/test/tint/types/texture/storage/2d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/storage/2d.wgsl.expected.ir.dxc.hlsl
@@ -18,52 +18,52 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint2 v = (0u).xx;
-  t_rgba8unorm.GetDimensions(v[0u], v[1u]);
+  t_rgba8unorm.GetDimensions(v.x, v.y);
   uint2 dim1 = v;
   uint2 v_1 = (0u).xx;
-  t_rgba8snorm.GetDimensions(v_1[0u], v_1[1u]);
+  t_rgba8snorm.GetDimensions(v_1.x, v_1.y);
   uint2 dim2 = v_1;
   uint2 v_2 = (0u).xx;
-  t_rgba8uint.GetDimensions(v_2[0u], v_2[1u]);
+  t_rgba8uint.GetDimensions(v_2.x, v_2.y);
   uint2 dim3 = v_2;
   uint2 v_3 = (0u).xx;
-  t_rgba8sint.GetDimensions(v_3[0u], v_3[1u]);
+  t_rgba8sint.GetDimensions(v_3.x, v_3.y);
   uint2 dim4 = v_3;
   uint2 v_4 = (0u).xx;
-  t_rgba16uint.GetDimensions(v_4[0u], v_4[1u]);
+  t_rgba16uint.GetDimensions(v_4.x, v_4.y);
   uint2 dim5 = v_4;
   uint2 v_5 = (0u).xx;
-  t_rgba16sint.GetDimensions(v_5[0u], v_5[1u]);
+  t_rgba16sint.GetDimensions(v_5.x, v_5.y);
   uint2 dim6 = v_5;
   uint2 v_6 = (0u).xx;
-  t_rgba16float.GetDimensions(v_6[0u], v_6[1u]);
+  t_rgba16float.GetDimensions(v_6.x, v_6.y);
   uint2 dim7 = v_6;
   uint2 v_7 = (0u).xx;
-  t_r32uint.GetDimensions(v_7[0u], v_7[1u]);
+  t_r32uint.GetDimensions(v_7.x, v_7.y);
   uint2 dim8 = v_7;
   uint2 v_8 = (0u).xx;
-  t_r32sint.GetDimensions(v_8[0u], v_8[1u]);
+  t_r32sint.GetDimensions(v_8.x, v_8.y);
   uint2 dim9 = v_8;
   uint2 v_9 = (0u).xx;
-  t_r32float.GetDimensions(v_9[0u], v_9[1u]);
+  t_r32float.GetDimensions(v_9.x, v_9.y);
   uint2 dim10 = v_9;
   uint2 v_10 = (0u).xx;
-  t_rg32uint.GetDimensions(v_10[0u], v_10[1u]);
+  t_rg32uint.GetDimensions(v_10.x, v_10.y);
   uint2 dim11 = v_10;
   uint2 v_11 = (0u).xx;
-  t_rg32sint.GetDimensions(v_11[0u], v_11[1u]);
+  t_rg32sint.GetDimensions(v_11.x, v_11.y);
   uint2 dim12 = v_11;
   uint2 v_12 = (0u).xx;
-  t_rg32float.GetDimensions(v_12[0u], v_12[1u]);
+  t_rg32float.GetDimensions(v_12.x, v_12.y);
   uint2 dim13 = v_12;
   uint2 v_13 = (0u).xx;
-  t_rgba32uint.GetDimensions(v_13[0u], v_13[1u]);
+  t_rgba32uint.GetDimensions(v_13.x, v_13.y);
   uint2 dim14 = v_13;
   uint2 v_14 = (0u).xx;
-  t_rgba32sint.GetDimensions(v_14[0u], v_14[1u]);
+  t_rgba32sint.GetDimensions(v_14.x, v_14.y);
   uint2 dim15 = v_14;
   uint2 v_15 = (0u).xx;
-  t_rgba32float.GetDimensions(v_15[0u], v_15[1u]);
+  t_rgba32float.GetDimensions(v_15.x, v_15.y);
   uint2 dim16 = v_15;
 }
 
diff --git a/test/tint/types/texture/storage/2d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/storage/2d.wgsl.expected.ir.fxc.hlsl
index 643c740..3ee334b 100644
--- a/test/tint/types/texture/storage/2d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/storage/2d.wgsl.expected.ir.fxc.hlsl
@@ -18,52 +18,52 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint2 v = (0u).xx;
-  t_rgba8unorm.GetDimensions(v[0u], v[1u]);
+  t_rgba8unorm.GetDimensions(v.x, v.y);
   uint2 dim1 = v;
   uint2 v_1 = (0u).xx;
-  t_rgba8snorm.GetDimensions(v_1[0u], v_1[1u]);
+  t_rgba8snorm.GetDimensions(v_1.x, v_1.y);
   uint2 dim2 = v_1;
   uint2 v_2 = (0u).xx;
-  t_rgba8uint.GetDimensions(v_2[0u], v_2[1u]);
+  t_rgba8uint.GetDimensions(v_2.x, v_2.y);
   uint2 dim3 = v_2;
   uint2 v_3 = (0u).xx;
-  t_rgba8sint.GetDimensions(v_3[0u], v_3[1u]);
+  t_rgba8sint.GetDimensions(v_3.x, v_3.y);
   uint2 dim4 = v_3;
   uint2 v_4 = (0u).xx;
-  t_rgba16uint.GetDimensions(v_4[0u], v_4[1u]);
+  t_rgba16uint.GetDimensions(v_4.x, v_4.y);
   uint2 dim5 = v_4;
   uint2 v_5 = (0u).xx;
-  t_rgba16sint.GetDimensions(v_5[0u], v_5[1u]);
+  t_rgba16sint.GetDimensions(v_5.x, v_5.y);
   uint2 dim6 = v_5;
   uint2 v_6 = (0u).xx;
-  t_rgba16float.GetDimensions(v_6[0u], v_6[1u]);
+  t_rgba16float.GetDimensions(v_6.x, v_6.y);
   uint2 dim7 = v_6;
   uint2 v_7 = (0u).xx;
-  t_r32uint.GetDimensions(v_7[0u], v_7[1u]);
+  t_r32uint.GetDimensions(v_7.x, v_7.y);
   uint2 dim8 = v_7;
   uint2 v_8 = (0u).xx;
-  t_r32sint.GetDimensions(v_8[0u], v_8[1u]);
+  t_r32sint.GetDimensions(v_8.x, v_8.y);
   uint2 dim9 = v_8;
   uint2 v_9 = (0u).xx;
-  t_r32float.GetDimensions(v_9[0u], v_9[1u]);
+  t_r32float.GetDimensions(v_9.x, v_9.y);
   uint2 dim10 = v_9;
   uint2 v_10 = (0u).xx;
-  t_rg32uint.GetDimensions(v_10[0u], v_10[1u]);
+  t_rg32uint.GetDimensions(v_10.x, v_10.y);
   uint2 dim11 = v_10;
   uint2 v_11 = (0u).xx;
-  t_rg32sint.GetDimensions(v_11[0u], v_11[1u]);
+  t_rg32sint.GetDimensions(v_11.x, v_11.y);
   uint2 dim12 = v_11;
   uint2 v_12 = (0u).xx;
-  t_rg32float.GetDimensions(v_12[0u], v_12[1u]);
+  t_rg32float.GetDimensions(v_12.x, v_12.y);
   uint2 dim13 = v_12;
   uint2 v_13 = (0u).xx;
-  t_rgba32uint.GetDimensions(v_13[0u], v_13[1u]);
+  t_rgba32uint.GetDimensions(v_13.x, v_13.y);
   uint2 dim14 = v_13;
   uint2 v_14 = (0u).xx;
-  t_rgba32sint.GetDimensions(v_14[0u], v_14[1u]);
+  t_rgba32sint.GetDimensions(v_14.x, v_14.y);
   uint2 dim15 = v_14;
   uint2 v_15 = (0u).xx;
-  t_rgba32float.GetDimensions(v_15[0u], v_15[1u]);
+  t_rgba32float.GetDimensions(v_15.x, v_15.y);
   uint2 dim16 = v_15;
 }
 
diff --git a/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.dxc.hlsl
index d099886..69717bd 100644
--- a/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.dxc.hlsl
@@ -18,52 +18,52 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_rgba8unorm.GetDimensions(v[0u], v[1u], v[2u]);
+  t_rgba8unorm.GetDimensions(v.x, v.y, v.z);
   uint2 dim1 = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_rgba8snorm.GetDimensions(v_1[0u], v_1[1u], v_1[2u]);
+  t_rgba8snorm.GetDimensions(v_1.x, v_1.y, v_1.z);
   uint2 dim2 = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_rgba8uint.GetDimensions(v_2[0u], v_2[1u], v_2[2u]);
+  t_rgba8uint.GetDimensions(v_2.x, v_2.y, v_2.z);
   uint2 dim3 = v_2.xy;
   uint3 v_3 = (0u).xxx;
-  t_rgba8sint.GetDimensions(v_3[0u], v_3[1u], v_3[2u]);
+  t_rgba8sint.GetDimensions(v_3.x, v_3.y, v_3.z);
   uint2 dim4 = v_3.xy;
   uint3 v_4 = (0u).xxx;
-  t_rgba16uint.GetDimensions(v_4[0u], v_4[1u], v_4[2u]);
+  t_rgba16uint.GetDimensions(v_4.x, v_4.y, v_4.z);
   uint2 dim5 = v_4.xy;
   uint3 v_5 = (0u).xxx;
-  t_rgba16sint.GetDimensions(v_5[0u], v_5[1u], v_5[2u]);
+  t_rgba16sint.GetDimensions(v_5.x, v_5.y, v_5.z);
   uint2 dim6 = v_5.xy;
   uint3 v_6 = (0u).xxx;
-  t_rgba16float.GetDimensions(v_6[0u], v_6[1u], v_6[2u]);
+  t_rgba16float.GetDimensions(v_6.x, v_6.y, v_6.z);
   uint2 dim7 = v_6.xy;
   uint3 v_7 = (0u).xxx;
-  t_r32uint.GetDimensions(v_7[0u], v_7[1u], v_7[2u]);
+  t_r32uint.GetDimensions(v_7.x, v_7.y, v_7.z);
   uint2 dim8 = v_7.xy;
   uint3 v_8 = (0u).xxx;
-  t_r32sint.GetDimensions(v_8[0u], v_8[1u], v_8[2u]);
+  t_r32sint.GetDimensions(v_8.x, v_8.y, v_8.z);
   uint2 dim9 = v_8.xy;
   uint3 v_9 = (0u).xxx;
-  t_r32float.GetDimensions(v_9[0u], v_9[1u], v_9[2u]);
+  t_r32float.GetDimensions(v_9.x, v_9.y, v_9.z);
   uint2 dim10 = v_9.xy;
   uint3 v_10 = (0u).xxx;
-  t_rg32uint.GetDimensions(v_10[0u], v_10[1u], v_10[2u]);
+  t_rg32uint.GetDimensions(v_10.x, v_10.y, v_10.z);
   uint2 dim11 = v_10.xy;
   uint3 v_11 = (0u).xxx;
-  t_rg32sint.GetDimensions(v_11[0u], v_11[1u], v_11[2u]);
+  t_rg32sint.GetDimensions(v_11.x, v_11.y, v_11.z);
   uint2 dim12 = v_11.xy;
   uint3 v_12 = (0u).xxx;
-  t_rg32float.GetDimensions(v_12[0u], v_12[1u], v_12[2u]);
+  t_rg32float.GetDimensions(v_12.x, v_12.y, v_12.z);
   uint2 dim13 = v_12.xy;
   uint3 v_13 = (0u).xxx;
-  t_rgba32uint.GetDimensions(v_13[0u], v_13[1u], v_13[2u]);
+  t_rgba32uint.GetDimensions(v_13.x, v_13.y, v_13.z);
   uint2 dim14 = v_13.xy;
   uint3 v_14 = (0u).xxx;
-  t_rgba32sint.GetDimensions(v_14[0u], v_14[1u], v_14[2u]);
+  t_rgba32sint.GetDimensions(v_14.x, v_14.y, v_14.z);
   uint2 dim15 = v_14.xy;
   uint3 v_15 = (0u).xxx;
-  t_rgba32float.GetDimensions(v_15[0u], v_15[1u], v_15[2u]);
+  t_rgba32float.GetDimensions(v_15.x, v_15.y, v_15.z);
   uint2 dim16 = v_15.xy;
 }
 
diff --git a/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.fxc.hlsl
index d099886..69717bd 100644
--- a/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/storage/2d_array.wgsl.expected.ir.fxc.hlsl
@@ -18,52 +18,52 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_rgba8unorm.GetDimensions(v[0u], v[1u], v[2u]);
+  t_rgba8unorm.GetDimensions(v.x, v.y, v.z);
   uint2 dim1 = v.xy;
   uint3 v_1 = (0u).xxx;
-  t_rgba8snorm.GetDimensions(v_1[0u], v_1[1u], v_1[2u]);
+  t_rgba8snorm.GetDimensions(v_1.x, v_1.y, v_1.z);
   uint2 dim2 = v_1.xy;
   uint3 v_2 = (0u).xxx;
-  t_rgba8uint.GetDimensions(v_2[0u], v_2[1u], v_2[2u]);
+  t_rgba8uint.GetDimensions(v_2.x, v_2.y, v_2.z);
   uint2 dim3 = v_2.xy;
   uint3 v_3 = (0u).xxx;
-  t_rgba8sint.GetDimensions(v_3[0u], v_3[1u], v_3[2u]);
+  t_rgba8sint.GetDimensions(v_3.x, v_3.y, v_3.z);
   uint2 dim4 = v_3.xy;
   uint3 v_4 = (0u).xxx;
-  t_rgba16uint.GetDimensions(v_4[0u], v_4[1u], v_4[2u]);
+  t_rgba16uint.GetDimensions(v_4.x, v_4.y, v_4.z);
   uint2 dim5 = v_4.xy;
   uint3 v_5 = (0u).xxx;
-  t_rgba16sint.GetDimensions(v_5[0u], v_5[1u], v_5[2u]);
+  t_rgba16sint.GetDimensions(v_5.x, v_5.y, v_5.z);
   uint2 dim6 = v_5.xy;
   uint3 v_6 = (0u).xxx;
-  t_rgba16float.GetDimensions(v_6[0u], v_6[1u], v_6[2u]);
+  t_rgba16float.GetDimensions(v_6.x, v_6.y, v_6.z);
   uint2 dim7 = v_6.xy;
   uint3 v_7 = (0u).xxx;
-  t_r32uint.GetDimensions(v_7[0u], v_7[1u], v_7[2u]);
+  t_r32uint.GetDimensions(v_7.x, v_7.y, v_7.z);
   uint2 dim8 = v_7.xy;
   uint3 v_8 = (0u).xxx;
-  t_r32sint.GetDimensions(v_8[0u], v_8[1u], v_8[2u]);
+  t_r32sint.GetDimensions(v_8.x, v_8.y, v_8.z);
   uint2 dim9 = v_8.xy;
   uint3 v_9 = (0u).xxx;
-  t_r32float.GetDimensions(v_9[0u], v_9[1u], v_9[2u]);
+  t_r32float.GetDimensions(v_9.x, v_9.y, v_9.z);
   uint2 dim10 = v_9.xy;
   uint3 v_10 = (0u).xxx;
-  t_rg32uint.GetDimensions(v_10[0u], v_10[1u], v_10[2u]);
+  t_rg32uint.GetDimensions(v_10.x, v_10.y, v_10.z);
   uint2 dim11 = v_10.xy;
   uint3 v_11 = (0u).xxx;
-  t_rg32sint.GetDimensions(v_11[0u], v_11[1u], v_11[2u]);
+  t_rg32sint.GetDimensions(v_11.x, v_11.y, v_11.z);
   uint2 dim12 = v_11.xy;
   uint3 v_12 = (0u).xxx;
-  t_rg32float.GetDimensions(v_12[0u], v_12[1u], v_12[2u]);
+  t_rg32float.GetDimensions(v_12.x, v_12.y, v_12.z);
   uint2 dim13 = v_12.xy;
   uint3 v_13 = (0u).xxx;
-  t_rgba32uint.GetDimensions(v_13[0u], v_13[1u], v_13[2u]);
+  t_rgba32uint.GetDimensions(v_13.x, v_13.y, v_13.z);
   uint2 dim14 = v_13.xy;
   uint3 v_14 = (0u).xxx;
-  t_rgba32sint.GetDimensions(v_14[0u], v_14[1u], v_14[2u]);
+  t_rgba32sint.GetDimensions(v_14.x, v_14.y, v_14.z);
   uint2 dim15 = v_14.xy;
   uint3 v_15 = (0u).xxx;
-  t_rgba32float.GetDimensions(v_15[0u], v_15[1u], v_15[2u]);
+  t_rgba32float.GetDimensions(v_15.x, v_15.y, v_15.z);
   uint2 dim16 = v_15.xy;
 }
 
diff --git a/test/tint/types/texture/storage/3d.wgsl.expected.ir.dxc.hlsl b/test/tint/types/texture/storage/3d.wgsl.expected.ir.dxc.hlsl
index 78df5dc..8d995d9 100644
--- a/test/tint/types/texture/storage/3d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/texture/storage/3d.wgsl.expected.ir.dxc.hlsl
@@ -18,52 +18,52 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_rgba8unorm.GetDimensions(v[0u], v[1u], v[2u]);
+  t_rgba8unorm.GetDimensions(v.x, v.y, v.z);
   uint3 dim1 = v;
   uint3 v_1 = (0u).xxx;
-  t_rgba8snorm.GetDimensions(v_1[0u], v_1[1u], v_1[2u]);
+  t_rgba8snorm.GetDimensions(v_1.x, v_1.y, v_1.z);
   uint3 dim2 = v_1;
   uint3 v_2 = (0u).xxx;
-  t_rgba8uint.GetDimensions(v_2[0u], v_2[1u], v_2[2u]);
+  t_rgba8uint.GetDimensions(v_2.x, v_2.y, v_2.z);
   uint3 dim3 = v_2;
   uint3 v_3 = (0u).xxx;
-  t_rgba8sint.GetDimensions(v_3[0u], v_3[1u], v_3[2u]);
+  t_rgba8sint.GetDimensions(v_3.x, v_3.y, v_3.z);
   uint3 dim4 = v_3;
   uint3 v_4 = (0u).xxx;
-  t_rgba16uint.GetDimensions(v_4[0u], v_4[1u], v_4[2u]);
+  t_rgba16uint.GetDimensions(v_4.x, v_4.y, v_4.z);
   uint3 dim5 = v_4;
   uint3 v_5 = (0u).xxx;
-  t_rgba16sint.GetDimensions(v_5[0u], v_5[1u], v_5[2u]);
+  t_rgba16sint.GetDimensions(v_5.x, v_5.y, v_5.z);
   uint3 dim6 = v_5;
   uint3 v_6 = (0u).xxx;
-  t_rgba16float.GetDimensions(v_6[0u], v_6[1u], v_6[2u]);
+  t_rgba16float.GetDimensions(v_6.x, v_6.y, v_6.z);
   uint3 dim7 = v_6;
   uint3 v_7 = (0u).xxx;
-  t_r32uint.GetDimensions(v_7[0u], v_7[1u], v_7[2u]);
+  t_r32uint.GetDimensions(v_7.x, v_7.y, v_7.z);
   uint3 dim8 = v_7;
   uint3 v_8 = (0u).xxx;
-  t_r32sint.GetDimensions(v_8[0u], v_8[1u], v_8[2u]);
+  t_r32sint.GetDimensions(v_8.x, v_8.y, v_8.z);
   uint3 dim9 = v_8;
   uint3 v_9 = (0u).xxx;
-  t_r32float.GetDimensions(v_9[0u], v_9[1u], v_9[2u]);
+  t_r32float.GetDimensions(v_9.x, v_9.y, v_9.z);
   uint3 dim10 = v_9;
   uint3 v_10 = (0u).xxx;
-  t_rg32uint.GetDimensions(v_10[0u], v_10[1u], v_10[2u]);
+  t_rg32uint.GetDimensions(v_10.x, v_10.y, v_10.z);
   uint3 dim11 = v_10;
   uint3 v_11 = (0u).xxx;
-  t_rg32sint.GetDimensions(v_11[0u], v_11[1u], v_11[2u]);
+  t_rg32sint.GetDimensions(v_11.x, v_11.y, v_11.z);
   uint3 dim12 = v_11;
   uint3 v_12 = (0u).xxx;
-  t_rg32float.GetDimensions(v_12[0u], v_12[1u], v_12[2u]);
+  t_rg32float.GetDimensions(v_12.x, v_12.y, v_12.z);
   uint3 dim13 = v_12;
   uint3 v_13 = (0u).xxx;
-  t_rgba32uint.GetDimensions(v_13[0u], v_13[1u], v_13[2u]);
+  t_rgba32uint.GetDimensions(v_13.x, v_13.y, v_13.z);
   uint3 dim14 = v_13;
   uint3 v_14 = (0u).xxx;
-  t_rgba32sint.GetDimensions(v_14[0u], v_14[1u], v_14[2u]);
+  t_rgba32sint.GetDimensions(v_14.x, v_14.y, v_14.z);
   uint3 dim15 = v_14;
   uint3 v_15 = (0u).xxx;
-  t_rgba32float.GetDimensions(v_15[0u], v_15[1u], v_15[2u]);
+  t_rgba32float.GetDimensions(v_15.x, v_15.y, v_15.z);
   uint3 dim16 = v_15;
 }
 
diff --git a/test/tint/types/texture/storage/3d.wgsl.expected.ir.fxc.hlsl b/test/tint/types/texture/storage/3d.wgsl.expected.ir.fxc.hlsl
index 78df5dc..8d995d9 100644
--- a/test/tint/types/texture/storage/3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/texture/storage/3d.wgsl.expected.ir.fxc.hlsl
@@ -18,52 +18,52 @@
 [numthreads(1, 1, 1)]
 void main() {
   uint3 v = (0u).xxx;
-  t_rgba8unorm.GetDimensions(v[0u], v[1u], v[2u]);
+  t_rgba8unorm.GetDimensions(v.x, v.y, v.z);
   uint3 dim1 = v;
   uint3 v_1 = (0u).xxx;
-  t_rgba8snorm.GetDimensions(v_1[0u], v_1[1u], v_1[2u]);
+  t_rgba8snorm.GetDimensions(v_1.x, v_1.y, v_1.z);
   uint3 dim2 = v_1;
   uint3 v_2 = (0u).xxx;
-  t_rgba8uint.GetDimensions(v_2[0u], v_2[1u], v_2[2u]);
+  t_rgba8uint.GetDimensions(v_2.x, v_2.y, v_2.z);
   uint3 dim3 = v_2;
   uint3 v_3 = (0u).xxx;
-  t_rgba8sint.GetDimensions(v_3[0u], v_3[1u], v_3[2u]);
+  t_rgba8sint.GetDimensions(v_3.x, v_3.y, v_3.z);
   uint3 dim4 = v_3;
   uint3 v_4 = (0u).xxx;
-  t_rgba16uint.GetDimensions(v_4[0u], v_4[1u], v_4[2u]);
+  t_rgba16uint.GetDimensions(v_4.x, v_4.y, v_4.z);
   uint3 dim5 = v_4;
   uint3 v_5 = (0u).xxx;
-  t_rgba16sint.GetDimensions(v_5[0u], v_5[1u], v_5[2u]);
+  t_rgba16sint.GetDimensions(v_5.x, v_5.y, v_5.z);
   uint3 dim6 = v_5;
   uint3 v_6 = (0u).xxx;
-  t_rgba16float.GetDimensions(v_6[0u], v_6[1u], v_6[2u]);
+  t_rgba16float.GetDimensions(v_6.x, v_6.y, v_6.z);
   uint3 dim7 = v_6;
   uint3 v_7 = (0u).xxx;
-  t_r32uint.GetDimensions(v_7[0u], v_7[1u], v_7[2u]);
+  t_r32uint.GetDimensions(v_7.x, v_7.y, v_7.z);
   uint3 dim8 = v_7;
   uint3 v_8 = (0u).xxx;
-  t_r32sint.GetDimensions(v_8[0u], v_8[1u], v_8[2u]);
+  t_r32sint.GetDimensions(v_8.x, v_8.y, v_8.z);
   uint3 dim9 = v_8;
   uint3 v_9 = (0u).xxx;
-  t_r32float.GetDimensions(v_9[0u], v_9[1u], v_9[2u]);
+  t_r32float.GetDimensions(v_9.x, v_9.y, v_9.z);
   uint3 dim10 = v_9;
   uint3 v_10 = (0u).xxx;
-  t_rg32uint.GetDimensions(v_10[0u], v_10[1u], v_10[2u]);
+  t_rg32uint.GetDimensions(v_10.x, v_10.y, v_10.z);
   uint3 dim11 = v_10;
   uint3 v_11 = (0u).xxx;
-  t_rg32sint.GetDimensions(v_11[0u], v_11[1u], v_11[2u]);
+  t_rg32sint.GetDimensions(v_11.x, v_11.y, v_11.z);
   uint3 dim12 = v_11;
   uint3 v_12 = (0u).xxx;
-  t_rg32float.GetDimensions(v_12[0u], v_12[1u], v_12[2u]);
+  t_rg32float.GetDimensions(v_12.x, v_12.y, v_12.z);
   uint3 dim13 = v_12;
   uint3 v_13 = (0u).xxx;
-  t_rgba32uint.GetDimensions(v_13[0u], v_13[1u], v_13[2u]);
+  t_rgba32uint.GetDimensions(v_13.x, v_13.y, v_13.z);
   uint3 dim14 = v_13;
   uint3 v_14 = (0u).xxx;
-  t_rgba32sint.GetDimensions(v_14[0u], v_14[1u], v_14[2u]);
+  t_rgba32sint.GetDimensions(v_14.x, v_14.y, v_14.z);
   uint3 dim15 = v_14;
   uint3 v_15 = (0u).xxx;
-  t_rgba32float.GetDimensions(v_15[0u], v_15[1u], v_15[2u]);
+  t_rgba32float.GetDimensions(v_15.x, v_15.y, v_15.z);
   uint3 dim16 = v_15;
 }
 
diff --git a/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.dxc.hlsl b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.dxc.hlsl
index 55bb018..9714f5c 100644
--- a/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.dxc.hlsl
@@ -207,106 +207,106 @@
     m99 = float2x2((0.0f).xx, (0.0f).xx);
   }
   GroupMemoryBarrierWithGroupSync();
-  m00[int(0)][int(0)] = 1.0f;
-  m01[int(0)][int(0)] = 1.0f;
-  m02[int(0)][int(0)] = 1.0f;
-  m03[int(0)][int(0)] = 1.0f;
-  m04[int(0)][int(0)] = 1.0f;
-  m05[int(0)][int(0)] = 1.0f;
-  m06[int(0)][int(0)] = 1.0f;
-  m07[int(0)][int(0)] = 1.0f;
-  m08[int(0)][int(0)] = 1.0f;
-  m09[int(0)][int(0)] = 1.0f;
-  m10[int(0)][int(0)] = 1.0f;
-  m11[int(0)][int(0)] = 1.0f;
-  m12[int(0)][int(0)] = 1.0f;
-  m13[int(0)][int(0)] = 1.0f;
-  m14[int(0)][int(0)] = 1.0f;
-  m15[int(0)][int(0)] = 1.0f;
-  m16[int(0)][int(0)] = 1.0f;
-  m17[int(0)][int(0)] = 1.0f;
-  m18[int(0)][int(0)] = 1.0f;
-  m19[int(0)][int(0)] = 1.0f;
-  m20[int(0)][int(0)] = 1.0f;
-  m21[int(0)][int(0)] = 1.0f;
-  m22[int(0)][int(0)] = 1.0f;
-  m23[int(0)][int(0)] = 1.0f;
-  m24[int(0)][int(0)] = 1.0f;
-  m25[int(0)][int(0)] = 1.0f;
-  m26[int(0)][int(0)] = 1.0f;
-  m27[int(0)][int(0)] = 1.0f;
-  m28[int(0)][int(0)] = 1.0f;
-  m29[int(0)][int(0)] = 1.0f;
-  m30[int(0)][int(0)] = 1.0f;
-  m31[int(0)][int(0)] = 1.0f;
-  m32[int(0)][int(0)] = 1.0f;
-  m33[int(0)][int(0)] = 1.0f;
-  m34[int(0)][int(0)] = 1.0f;
-  m35[int(0)][int(0)] = 1.0f;
-  m36[int(0)][int(0)] = 1.0f;
-  m37[int(0)][int(0)] = 1.0f;
-  m38[int(0)][int(0)] = 1.0f;
-  m39[int(0)][int(0)] = 1.0f;
-  m40[int(0)][int(0)] = 1.0f;
-  m41[int(0)][int(0)] = 1.0f;
-  m42[int(0)][int(0)] = 1.0f;
-  m43[int(0)][int(0)] = 1.0f;
-  m44[int(0)][int(0)] = 1.0f;
-  m45[int(0)][int(0)] = 1.0f;
-  m46[int(0)][int(0)] = 1.0f;
-  m47[int(0)][int(0)] = 1.0f;
-  m48[int(0)][int(0)] = 1.0f;
-  m49[int(0)][int(0)] = 1.0f;
-  m50[int(0)][int(0)] = 1.0f;
-  m51[int(0)][int(0)] = 1.0f;
-  m52[int(0)][int(0)] = 1.0f;
-  m53[int(0)][int(0)] = 1.0f;
-  m54[int(0)][int(0)] = 1.0f;
-  m55[int(0)][int(0)] = 1.0f;
-  m56[int(0)][int(0)] = 1.0f;
-  m57[int(0)][int(0)] = 1.0f;
-  m58[int(0)][int(0)] = 1.0f;
-  m59[int(0)][int(0)] = 1.0f;
-  m60[int(0)][int(0)] = 1.0f;
-  m61[int(0)][int(0)] = 1.0f;
-  m62[int(0)][int(0)] = 1.0f;
-  m63[int(0)][int(0)] = 1.0f;
-  m64[int(0)][int(0)] = 1.0f;
-  m65[int(0)][int(0)] = 1.0f;
-  m66[int(0)][int(0)] = 1.0f;
-  m67[int(0)][int(0)] = 1.0f;
-  m68[int(0)][int(0)] = 1.0f;
-  m69[int(0)][int(0)] = 1.0f;
-  m70[int(0)][int(0)] = 1.0f;
-  m71[int(0)][int(0)] = 1.0f;
-  m72[int(0)][int(0)] = 1.0f;
-  m73[int(0)][int(0)] = 1.0f;
-  m74[int(0)][int(0)] = 1.0f;
-  m75[int(0)][int(0)] = 1.0f;
-  m76[int(0)][int(0)] = 1.0f;
-  m77[int(0)][int(0)] = 1.0f;
-  m78[int(0)][int(0)] = 1.0f;
-  m79[int(0)][int(0)] = 1.0f;
-  m80[int(0)][int(0)] = 1.0f;
-  m81[int(0)][int(0)] = 1.0f;
-  m82[int(0)][int(0)] = 1.0f;
-  m83[int(0)][int(0)] = 1.0f;
-  m84[int(0)][int(0)] = 1.0f;
-  m85[int(0)][int(0)] = 1.0f;
-  m86[int(0)][int(0)] = 1.0f;
-  m87[int(0)][int(0)] = 1.0f;
-  m88[int(0)][int(0)] = 1.0f;
-  m89[int(0)][int(0)] = 1.0f;
-  m90[int(0)][int(0)] = 1.0f;
-  m91[int(0)][int(0)] = 1.0f;
-  m92[int(0)][int(0)] = 1.0f;
-  m93[int(0)][int(0)] = 1.0f;
-  m94[int(0)][int(0)] = 1.0f;
-  m95[int(0)][int(0)] = 1.0f;
-  m96[int(0)][int(0)] = 1.0f;
-  m97[int(0)][int(0)] = 1.0f;
-  m98[int(0)][int(0)] = 1.0f;
-  m99[int(0)][int(0)] = 1.0f;
+  m00[int(0)].x = 1.0f;
+  m01[int(0)].x = 1.0f;
+  m02[int(0)].x = 1.0f;
+  m03[int(0)].x = 1.0f;
+  m04[int(0)].x = 1.0f;
+  m05[int(0)].x = 1.0f;
+  m06[int(0)].x = 1.0f;
+  m07[int(0)].x = 1.0f;
+  m08[int(0)].x = 1.0f;
+  m09[int(0)].x = 1.0f;
+  m10[int(0)].x = 1.0f;
+  m11[int(0)].x = 1.0f;
+  m12[int(0)].x = 1.0f;
+  m13[int(0)].x = 1.0f;
+  m14[int(0)].x = 1.0f;
+  m15[int(0)].x = 1.0f;
+  m16[int(0)].x = 1.0f;
+  m17[int(0)].x = 1.0f;
+  m18[int(0)].x = 1.0f;
+  m19[int(0)].x = 1.0f;
+  m20[int(0)].x = 1.0f;
+  m21[int(0)].x = 1.0f;
+  m22[int(0)].x = 1.0f;
+  m23[int(0)].x = 1.0f;
+  m24[int(0)].x = 1.0f;
+  m25[int(0)].x = 1.0f;
+  m26[int(0)].x = 1.0f;
+  m27[int(0)].x = 1.0f;
+  m28[int(0)].x = 1.0f;
+  m29[int(0)].x = 1.0f;
+  m30[int(0)].x = 1.0f;
+  m31[int(0)].x = 1.0f;
+  m32[int(0)].x = 1.0f;
+  m33[int(0)].x = 1.0f;
+  m34[int(0)].x = 1.0f;
+  m35[int(0)].x = 1.0f;
+  m36[int(0)].x = 1.0f;
+  m37[int(0)].x = 1.0f;
+  m38[int(0)].x = 1.0f;
+  m39[int(0)].x = 1.0f;
+  m40[int(0)].x = 1.0f;
+  m41[int(0)].x = 1.0f;
+  m42[int(0)].x = 1.0f;
+  m43[int(0)].x = 1.0f;
+  m44[int(0)].x = 1.0f;
+  m45[int(0)].x = 1.0f;
+  m46[int(0)].x = 1.0f;
+  m47[int(0)].x = 1.0f;
+  m48[int(0)].x = 1.0f;
+  m49[int(0)].x = 1.0f;
+  m50[int(0)].x = 1.0f;
+  m51[int(0)].x = 1.0f;
+  m52[int(0)].x = 1.0f;
+  m53[int(0)].x = 1.0f;
+  m54[int(0)].x = 1.0f;
+  m55[int(0)].x = 1.0f;
+  m56[int(0)].x = 1.0f;
+  m57[int(0)].x = 1.0f;
+  m58[int(0)].x = 1.0f;
+  m59[int(0)].x = 1.0f;
+  m60[int(0)].x = 1.0f;
+  m61[int(0)].x = 1.0f;
+  m62[int(0)].x = 1.0f;
+  m63[int(0)].x = 1.0f;
+  m64[int(0)].x = 1.0f;
+  m65[int(0)].x = 1.0f;
+  m66[int(0)].x = 1.0f;
+  m67[int(0)].x = 1.0f;
+  m68[int(0)].x = 1.0f;
+  m69[int(0)].x = 1.0f;
+  m70[int(0)].x = 1.0f;
+  m71[int(0)].x = 1.0f;
+  m72[int(0)].x = 1.0f;
+  m73[int(0)].x = 1.0f;
+  m74[int(0)].x = 1.0f;
+  m75[int(0)].x = 1.0f;
+  m76[int(0)].x = 1.0f;
+  m77[int(0)].x = 1.0f;
+  m78[int(0)].x = 1.0f;
+  m79[int(0)].x = 1.0f;
+  m80[int(0)].x = 1.0f;
+  m81[int(0)].x = 1.0f;
+  m82[int(0)].x = 1.0f;
+  m83[int(0)].x = 1.0f;
+  m84[int(0)].x = 1.0f;
+  m85[int(0)].x = 1.0f;
+  m86[int(0)].x = 1.0f;
+  m87[int(0)].x = 1.0f;
+  m88[int(0)].x = 1.0f;
+  m89[int(0)].x = 1.0f;
+  m90[int(0)].x = 1.0f;
+  m91[int(0)].x = 1.0f;
+  m92[int(0)].x = 1.0f;
+  m93[int(0)].x = 1.0f;
+  m94[int(0)].x = 1.0f;
+  m95[int(0)].x = 1.0f;
+  m96[int(0)].x = 1.0f;
+  m97[int(0)].x = 1.0f;
+  m98[int(0)].x = 1.0f;
+  m99[int(0)].x = 1.0f;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.fxc.hlsl b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.fxc.hlsl
index 55bb018..9714f5c 100644
--- a/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/var/uses/many_workgroup_vars.wgsl.expected.ir.fxc.hlsl
@@ -207,106 +207,106 @@
     m99 = float2x2((0.0f).xx, (0.0f).xx);
   }
   GroupMemoryBarrierWithGroupSync();
-  m00[int(0)][int(0)] = 1.0f;
-  m01[int(0)][int(0)] = 1.0f;
-  m02[int(0)][int(0)] = 1.0f;
-  m03[int(0)][int(0)] = 1.0f;
-  m04[int(0)][int(0)] = 1.0f;
-  m05[int(0)][int(0)] = 1.0f;
-  m06[int(0)][int(0)] = 1.0f;
-  m07[int(0)][int(0)] = 1.0f;
-  m08[int(0)][int(0)] = 1.0f;
-  m09[int(0)][int(0)] = 1.0f;
-  m10[int(0)][int(0)] = 1.0f;
-  m11[int(0)][int(0)] = 1.0f;
-  m12[int(0)][int(0)] = 1.0f;
-  m13[int(0)][int(0)] = 1.0f;
-  m14[int(0)][int(0)] = 1.0f;
-  m15[int(0)][int(0)] = 1.0f;
-  m16[int(0)][int(0)] = 1.0f;
-  m17[int(0)][int(0)] = 1.0f;
-  m18[int(0)][int(0)] = 1.0f;
-  m19[int(0)][int(0)] = 1.0f;
-  m20[int(0)][int(0)] = 1.0f;
-  m21[int(0)][int(0)] = 1.0f;
-  m22[int(0)][int(0)] = 1.0f;
-  m23[int(0)][int(0)] = 1.0f;
-  m24[int(0)][int(0)] = 1.0f;
-  m25[int(0)][int(0)] = 1.0f;
-  m26[int(0)][int(0)] = 1.0f;
-  m27[int(0)][int(0)] = 1.0f;
-  m28[int(0)][int(0)] = 1.0f;
-  m29[int(0)][int(0)] = 1.0f;
-  m30[int(0)][int(0)] = 1.0f;
-  m31[int(0)][int(0)] = 1.0f;
-  m32[int(0)][int(0)] = 1.0f;
-  m33[int(0)][int(0)] = 1.0f;
-  m34[int(0)][int(0)] = 1.0f;
-  m35[int(0)][int(0)] = 1.0f;
-  m36[int(0)][int(0)] = 1.0f;
-  m37[int(0)][int(0)] = 1.0f;
-  m38[int(0)][int(0)] = 1.0f;
-  m39[int(0)][int(0)] = 1.0f;
-  m40[int(0)][int(0)] = 1.0f;
-  m41[int(0)][int(0)] = 1.0f;
-  m42[int(0)][int(0)] = 1.0f;
-  m43[int(0)][int(0)] = 1.0f;
-  m44[int(0)][int(0)] = 1.0f;
-  m45[int(0)][int(0)] = 1.0f;
-  m46[int(0)][int(0)] = 1.0f;
-  m47[int(0)][int(0)] = 1.0f;
-  m48[int(0)][int(0)] = 1.0f;
-  m49[int(0)][int(0)] = 1.0f;
-  m50[int(0)][int(0)] = 1.0f;
-  m51[int(0)][int(0)] = 1.0f;
-  m52[int(0)][int(0)] = 1.0f;
-  m53[int(0)][int(0)] = 1.0f;
-  m54[int(0)][int(0)] = 1.0f;
-  m55[int(0)][int(0)] = 1.0f;
-  m56[int(0)][int(0)] = 1.0f;
-  m57[int(0)][int(0)] = 1.0f;
-  m58[int(0)][int(0)] = 1.0f;
-  m59[int(0)][int(0)] = 1.0f;
-  m60[int(0)][int(0)] = 1.0f;
-  m61[int(0)][int(0)] = 1.0f;
-  m62[int(0)][int(0)] = 1.0f;
-  m63[int(0)][int(0)] = 1.0f;
-  m64[int(0)][int(0)] = 1.0f;
-  m65[int(0)][int(0)] = 1.0f;
-  m66[int(0)][int(0)] = 1.0f;
-  m67[int(0)][int(0)] = 1.0f;
-  m68[int(0)][int(0)] = 1.0f;
-  m69[int(0)][int(0)] = 1.0f;
-  m70[int(0)][int(0)] = 1.0f;
-  m71[int(0)][int(0)] = 1.0f;
-  m72[int(0)][int(0)] = 1.0f;
-  m73[int(0)][int(0)] = 1.0f;
-  m74[int(0)][int(0)] = 1.0f;
-  m75[int(0)][int(0)] = 1.0f;
-  m76[int(0)][int(0)] = 1.0f;
-  m77[int(0)][int(0)] = 1.0f;
-  m78[int(0)][int(0)] = 1.0f;
-  m79[int(0)][int(0)] = 1.0f;
-  m80[int(0)][int(0)] = 1.0f;
-  m81[int(0)][int(0)] = 1.0f;
-  m82[int(0)][int(0)] = 1.0f;
-  m83[int(0)][int(0)] = 1.0f;
-  m84[int(0)][int(0)] = 1.0f;
-  m85[int(0)][int(0)] = 1.0f;
-  m86[int(0)][int(0)] = 1.0f;
-  m87[int(0)][int(0)] = 1.0f;
-  m88[int(0)][int(0)] = 1.0f;
-  m89[int(0)][int(0)] = 1.0f;
-  m90[int(0)][int(0)] = 1.0f;
-  m91[int(0)][int(0)] = 1.0f;
-  m92[int(0)][int(0)] = 1.0f;
-  m93[int(0)][int(0)] = 1.0f;
-  m94[int(0)][int(0)] = 1.0f;
-  m95[int(0)][int(0)] = 1.0f;
-  m96[int(0)][int(0)] = 1.0f;
-  m97[int(0)][int(0)] = 1.0f;
-  m98[int(0)][int(0)] = 1.0f;
-  m99[int(0)][int(0)] = 1.0f;
+  m00[int(0)].x = 1.0f;
+  m01[int(0)].x = 1.0f;
+  m02[int(0)].x = 1.0f;
+  m03[int(0)].x = 1.0f;
+  m04[int(0)].x = 1.0f;
+  m05[int(0)].x = 1.0f;
+  m06[int(0)].x = 1.0f;
+  m07[int(0)].x = 1.0f;
+  m08[int(0)].x = 1.0f;
+  m09[int(0)].x = 1.0f;
+  m10[int(0)].x = 1.0f;
+  m11[int(0)].x = 1.0f;
+  m12[int(0)].x = 1.0f;
+  m13[int(0)].x = 1.0f;
+  m14[int(0)].x = 1.0f;
+  m15[int(0)].x = 1.0f;
+  m16[int(0)].x = 1.0f;
+  m17[int(0)].x = 1.0f;
+  m18[int(0)].x = 1.0f;
+  m19[int(0)].x = 1.0f;
+  m20[int(0)].x = 1.0f;
+  m21[int(0)].x = 1.0f;
+  m22[int(0)].x = 1.0f;
+  m23[int(0)].x = 1.0f;
+  m24[int(0)].x = 1.0f;
+  m25[int(0)].x = 1.0f;
+  m26[int(0)].x = 1.0f;
+  m27[int(0)].x = 1.0f;
+  m28[int(0)].x = 1.0f;
+  m29[int(0)].x = 1.0f;
+  m30[int(0)].x = 1.0f;
+  m31[int(0)].x = 1.0f;
+  m32[int(0)].x = 1.0f;
+  m33[int(0)].x = 1.0f;
+  m34[int(0)].x = 1.0f;
+  m35[int(0)].x = 1.0f;
+  m36[int(0)].x = 1.0f;
+  m37[int(0)].x = 1.0f;
+  m38[int(0)].x = 1.0f;
+  m39[int(0)].x = 1.0f;
+  m40[int(0)].x = 1.0f;
+  m41[int(0)].x = 1.0f;
+  m42[int(0)].x = 1.0f;
+  m43[int(0)].x = 1.0f;
+  m44[int(0)].x = 1.0f;
+  m45[int(0)].x = 1.0f;
+  m46[int(0)].x = 1.0f;
+  m47[int(0)].x = 1.0f;
+  m48[int(0)].x = 1.0f;
+  m49[int(0)].x = 1.0f;
+  m50[int(0)].x = 1.0f;
+  m51[int(0)].x = 1.0f;
+  m52[int(0)].x = 1.0f;
+  m53[int(0)].x = 1.0f;
+  m54[int(0)].x = 1.0f;
+  m55[int(0)].x = 1.0f;
+  m56[int(0)].x = 1.0f;
+  m57[int(0)].x = 1.0f;
+  m58[int(0)].x = 1.0f;
+  m59[int(0)].x = 1.0f;
+  m60[int(0)].x = 1.0f;
+  m61[int(0)].x = 1.0f;
+  m62[int(0)].x = 1.0f;
+  m63[int(0)].x = 1.0f;
+  m64[int(0)].x = 1.0f;
+  m65[int(0)].x = 1.0f;
+  m66[int(0)].x = 1.0f;
+  m67[int(0)].x = 1.0f;
+  m68[int(0)].x = 1.0f;
+  m69[int(0)].x = 1.0f;
+  m70[int(0)].x = 1.0f;
+  m71[int(0)].x = 1.0f;
+  m72[int(0)].x = 1.0f;
+  m73[int(0)].x = 1.0f;
+  m74[int(0)].x = 1.0f;
+  m75[int(0)].x = 1.0f;
+  m76[int(0)].x = 1.0f;
+  m77[int(0)].x = 1.0f;
+  m78[int(0)].x = 1.0f;
+  m79[int(0)].x = 1.0f;
+  m80[int(0)].x = 1.0f;
+  m81[int(0)].x = 1.0f;
+  m82[int(0)].x = 1.0f;
+  m83[int(0)].x = 1.0f;
+  m84[int(0)].x = 1.0f;
+  m85[int(0)].x = 1.0f;
+  m86[int(0)].x = 1.0f;
+  m87[int(0)].x = 1.0f;
+  m88[int(0)].x = 1.0f;
+  m89[int(0)].x = 1.0f;
+  m90[int(0)].x = 1.0f;
+  m91[int(0)].x = 1.0f;
+  m92[int(0)].x = 1.0f;
+  m93[int(0)].x = 1.0f;
+  m94[int(0)].x = 1.0f;
+  m95[int(0)].x = 1.0f;
+  m96[int(0)].x = 1.0f;
+  m97[int(0)].x = 1.0f;
+  m98[int(0)].x = 1.0f;
+  m99[int(0)].x = 1.0f;
 }
 
 [numthreads(1, 1, 1)]