tint/writer: Disable constant inlining for lets

Once 'const' is introduced, let will no longer resolve to a
creation-time constant value.

Add temporary code into each of the writers to prevent constants that
originate from a 'let' from being inlined. This will reduce the amount
of noise in later CLs.

Bug: tint:1580
Change-Id: Id3493a43ac09fe9f042ff2d517d04b2ae854d43e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/94541
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 1173ca7..6603ce7 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -1766,12 +1766,18 @@
 
 bool GeneratorImpl::EmitExpression(std::ostream& out, const ast::Expression* expr) {
     if (auto* sem = builder_.Sem().Get(expr)) {
-        if (auto constant = sem->ConstantValue()) {
-            // We do not want to inline array constants, as this will undo the work of
-            // PromoteInitializersToConstVar, which ensures that arrays are declarated in 'let's
-            // before their usage.
-            if (!constant.Type()->Is<sem::Array>()) {
-                return EmitConstant(out, constant);
+        if (auto* user = sem->As<sem::VariableUser>();
+            !user || !user->Variable()->Declaration()->Is<ast::Let>()) {
+            // Disable constant inlining if the constant expression is from a 'let' declaration.
+            // TODO(crbug.com/tint/1580): Once 'const' is implemented, 'let' will no longer resolve
+            // to a shader-creation time constant value, and this can be removed.
+            if (auto constant = sem->ConstantValue()) {
+                // We do not want to inline array constants, as this will undo the work of
+                // PromoteInitializersToConstVar, which ensures that arrays are declarated in 'let's
+                // before their usage.
+                if (!constant.Type()->Is<sem::Array>()) {
+                    return EmitConstant(out, constant);
+                }
             }
         }
     }
diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc
index 72e02f0..c2a03b8 100644
--- a/src/tint/writer/hlsl/generator_impl.cc
+++ b/src/tint/writer/hlsl/generator_impl.cc
@@ -2611,12 +2611,18 @@
 
 bool GeneratorImpl::EmitExpression(std::ostream& out, const ast::Expression* expr) {
     if (auto* sem = builder_.Sem().Get(expr)) {
-        if (auto constant = sem->ConstantValue()) {
-            // We do not want to inline array constants, as this will undo the work of
-            // PromoteInitializersToConstVar, which ensures that arrays are declarated in 'let's
-            // before their usage.
-            if (!constant.Type()->Is<sem::Array>()) {
-                return EmitConstant(out, constant);
+        if (auto* user = sem->As<sem::VariableUser>();
+            !user || !user->Variable()->Declaration()->Is<ast::Let>()) {
+            // Disable constant inlining if the constant expression is from a 'let' declaration.
+            // TODO(crbug.com/tint/1580): Once 'const' is implemented, 'let' will no longer resolve
+            // to a shader-creation time constant value, and this can be removed.
+            if (auto constant = sem->ConstantValue()) {
+                // We do not want to inline array constants, as this will undo the work of
+                // PromoteInitializersToConstVar, which ensures that arrays are declarated in 'let's
+                // before their usage.
+                if (!constant.Type()->Is<sem::Array>()) {
+                    return EmitConstant(out, constant);
+                }
             }
         }
     }
diff --git a/src/tint/writer/hlsl/generator_impl_assign_test.cc b/src/tint/writer/hlsl/generator_impl_assign_test.cc
index c69cbdf..5e5f031 100644
--- a/src/tint/writer/hlsl/generator_impl_assign_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_assign_test.cc
@@ -58,7 +58,7 @@
   float3 lhs = float3(0.0f, 0.0f, 0.0f);
   float rhs = 0.0f;
   const uint index = 0u;
-  lhs[0u] = rhs;
+  lhs[index] = rhs;
 }
 )");
 }
@@ -106,7 +106,7 @@
   float4x2 lhs = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   float2 rhs = float2(0.0f, 0.0f);
   const uint index = 0u;
-  lhs[0u] = rhs;
+  lhs[index] = rhs;
 }
 )");
 }
@@ -159,7 +159,7 @@
   float4x2 lhs = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   float rhs = 0.0f;
   const uint index = 0u;
-  lhs[0u][0u] = rhs;
+  lhs[index][index] = rhs;
 }
 )");
 }
diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc
index 7df2ffb..a13e58a 100644
--- a/src/tint/writer/msl/generator_impl.cc
+++ b/src/tint/writer/msl/generator_impl.cc
@@ -1702,12 +1702,18 @@
 
 bool GeneratorImpl::EmitExpression(std::ostream& out, const ast::Expression* expr) {
     if (auto* sem = builder_.Sem().Get(expr)) {
-        if (auto constant = sem->ConstantValue()) {
-            // We do not want to inline array constants, as this will undo the work of
-            // PromoteInitializersToConstVar, which ensures that arrays are declarated in 'let's
-            // before their usage.
-            if (!constant.Type()->Is<sem::Array>()) {
-                return EmitConstant(out, constant);
+        if (auto* user = sem->As<sem::VariableUser>();
+            !user || !user->Variable()->Declaration()->Is<ast::Let>()) {
+            // Disable constant inlining if the constant expression is from a 'let' declaration.
+            // TODO(crbug.com/tint/1580): Once 'const' is implemented, 'let' will no longer resolve
+            // to a shader-creation time constant value, and this can be removed.
+            if (auto constant = sem->ConstantValue()) {
+                // We do not want to inline array constants, as this will undo the work of
+                // PromoteInitializersToConstVar, which ensures that arrays are declarated in 'let's
+                // before their usage.
+                if (!constant.Type()->Is<sem::Array>()) {
+                    return EmitConstant(out, constant);
+                }
             }
         }
     }
diff --git a/src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc b/src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc
index f477572..e311ebe 100644
--- a/src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc
+++ b/src/tint/writer/msl/generator_impl_variable_decl_statement_test.cc
@@ -132,7 +132,7 @@
     GeneratorImpl& gen = SanitizeAndBuild();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("thread float tint_symbol_1 = 0.0f;\n  float const tint_symbol = tint_symbol_1;\n  return;\n"));
+    EXPECT_THAT(gen.result(), HasSubstr("thread float tint_symbol_1 = initializer;\n  float const tint_symbol = tint_symbol_1;\n  return;\n"));
 }
 
 TEST_F(MslGeneratorImplTest, Emit_VariableDeclStatement_Workgroup) {
diff --git a/test/tint/access/let/vector.wgsl.expected.glsl b/test/tint/access/let/vector.wgsl.expected.glsl
index 533c099..4f43d1f 100644
--- a/test/tint/access/let/vector.wgsl.expected.glsl
+++ b/test/tint/access/let/vector.wgsl.expected.glsl
@@ -2,9 +2,9 @@
 
 void tint_symbol() {
   vec3 v = vec3(1.0f, 2.0f, 3.0f);
-  float scalar = vec3(1.0f, 2.0f, 3.0f).y;
-  vec2 swizzle2 = vec3(1.0f, 2.0f, 3.0f).xz;
-  vec3 swizzle3 = vec3(1.0f, 2.0f, 3.0f).xzy;
+  float scalar = v.y;
+  vec2 swizzle2 = v.xz;
+  vec3 swizzle3 = v.xzy;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/access/let/vector.wgsl.expected.hlsl b/test/tint/access/let/vector.wgsl.expected.hlsl
index b31972b..d86c8ed 100644
--- a/test/tint/access/let/vector.wgsl.expected.hlsl
+++ b/test/tint/access/let/vector.wgsl.expected.hlsl
@@ -1,8 +1,8 @@
 [numthreads(1, 1, 1)]
 void main() {
   const float3 v = float3(1.0f, 2.0f, 3.0f);
-  const float scalar = float3(1.0f, 2.0f, 3.0f).y;
-  const float2 swizzle2 = float3(1.0f, 2.0f, 3.0f).xz;
-  const float3 swizzle3 = float3(1.0f, 2.0f, 3.0f).xzy;
+  const float scalar = v.y;
+  const float2 swizzle2 = v.xz;
+  const float3 swizzle3 = v.xzy;
   return;
 }
diff --git a/test/tint/access/let/vector.wgsl.expected.msl b/test/tint/access/let/vector.wgsl.expected.msl
index cffbb68..13a9b75 100644
--- a/test/tint/access/let/vector.wgsl.expected.msl
+++ b/test/tint/access/let/vector.wgsl.expected.msl
@@ -3,9 +3,9 @@
 using namespace metal;
 kernel void tint_symbol() {
   float3 const v = float3(1.0f, 2.0f, 3.0f);
-  float const scalar = float3(1.0f, 2.0f, 3.0f)[1];
-  float2 const swizzle2 = float3(float3(1.0f, 2.0f, 3.0f)).xz;
-  float3 const swizzle3 = float3(float3(1.0f, 2.0f, 3.0f)).xzy;
+  float const scalar = v[1];
+  float2 const swizzle2 = float3(v).xz;
+  float3 const swizzle3 = float3(v).xzy;
   return;
 }
 
diff --git a/test/tint/array/type_constructor.wgsl.expected.glsl b/test/tint/array/type_constructor.wgsl.expected.glsl
index e377b0c..c701d15 100644
--- a/test/tint/array/type_constructor.wgsl.expected.glsl
+++ b/test/tint/array/type_constructor.wgsl.expected.glsl
@@ -4,7 +4,7 @@
   int x = 42;
   int empty[4] = int[4](0, 0, 0, 0);
   int nonempty[4] = int[4](1, 2, 3, 4);
-  int nonempty_with_expr[4] = int[4](1, 42, (42 + 1), 4);
+  int nonempty_with_expr[4] = int[4](1, x, (x + 1), 4);
   int nested_empty[2][3][4] = int[2][3][4](int[3][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0), int[4](0, 0, 0, 0)), int[3][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0), int[4](0, 0, 0, 0)));
   int tint_symbol_1[4] = int[4](1, 2, 3, 4);
   int tint_symbol_2[4] = int[4](5, 6, 7, 8);
@@ -15,7 +15,7 @@
   int tint_symbol_7[4] = int[4](21, 22, 23, 24);
   int tint_symbol_8[3][4] = int[3][4](tint_symbol_5, tint_symbol_6, tint_symbol_7);
   int nested_nonempty[2][3][4] = int[2][3][4](tint_symbol_4, tint_symbol_8);
-  int tint_symbol_9[4] = int[4](1, 2, 42, (42 + 1));
+  int tint_symbol_9[4] = int[4](1, 2, x, (x + 1));
   int tint_symbol_10[4] = int[4](5, 6, 3, (4 + 1));
   int tint_symbol_11[3][4] = int[3][4](tint_symbol_9, tint_symbol_10, nonempty);
   int nested_nonempty_with_expr[2][3][4] = int[2][3][4](tint_symbol_11, nested_nonempty[1]);
@@ -23,7 +23,7 @@
   int subexpr_empty = 0;
   int tint_symbol_13[4] = int[4](1, 2, 3, 4);
   int subexpr_nonempty = 3;
-  int tint_symbol_14[4] = int[4](1, 42, (42 + 1), 4);
+  int tint_symbol_14[4] = int[4](1, x, (x + 1), 4);
   int subexpr_nonempty_with_expr = tint_symbol_14[2];
   int tint_symbol_15[2][4] = int[2][4](int[4](0, 0, 0, 0), int[4](0, 0, 0, 0));
   int subexpr_nested_empty[4] = tint_symbol_15[1];
@@ -31,7 +31,7 @@
   int tint_symbol_17[4] = int[4](5, 6, 7, 8);
   int tint_symbol_18[2][4] = int[2][4](tint_symbol_16, tint_symbol_17);
   int subexpr_nested_nonempty[4] = tint_symbol_18[1];
-  int tint_symbol_19[4] = int[4](1, 42, (42 + 1), 4);
+  int tint_symbol_19[4] = int[4](1, x, (x + 1), 4);
   int tint_symbol_20[2][4] = int[2][4](tint_symbol_19, nested_nonempty[1][2]);
   int subexpr_nested_nonempty_with_expr[4] = tint_symbol_20[1];
 }
diff --git a/test/tint/array/type_constructor.wgsl.expected.hlsl b/test/tint/array/type_constructor.wgsl.expected.hlsl
index 1735f6f..6b7e3a6 100644
--- a/test/tint/array/type_constructor.wgsl.expected.hlsl
+++ b/test/tint/array/type_constructor.wgsl.expected.hlsl
@@ -3,7 +3,7 @@
   const int x = 42;
   const int empty[4] = (int[4])0;
   const int nonempty[4] = {1, 2, 3, 4};
-  const int nonempty_with_expr[4] = {1, 42, (42 + 1), 4};
+  const int nonempty_with_expr[4] = {1, x, (x + 1), 4};
   const int nested_empty[2][3][4] = (int[2][3][4])0;
   const int tint_symbol[4] = {1, 2, 3, 4};
   const int tint_symbol_1[4] = {5, 6, 7, 8};
@@ -14,7 +14,7 @@
   const int tint_symbol_6[4] = {21, 22, 23, 24};
   const int tint_symbol_7[3][4] = {tint_symbol_4, tint_symbol_5, tint_symbol_6};
   const int nested_nonempty[2][3][4] = {tint_symbol_3, tint_symbol_7};
-  const int tint_symbol_8[4] = {1, 2, 42, (42 + 1)};
+  const int tint_symbol_8[4] = {1, 2, x, (x + 1)};
   const int tint_symbol_9[4] = {5, 6, 3, (4 + 1)};
   const int tint_symbol_10[3][4] = {tint_symbol_8, tint_symbol_9, nonempty};
   const int nested_nonempty_with_expr[2][3][4] = {tint_symbol_10, nested_nonempty[1]};
@@ -22,7 +22,7 @@
   const int subexpr_empty = 0;
   const int tint_symbol_12[4] = {1, 2, 3, 4};
   const int subexpr_nonempty = 3;
-  const int tint_symbol_13[4] = {1, 42, (42 + 1), 4};
+  const int tint_symbol_13[4] = {1, x, (x + 1), 4};
   const int subexpr_nonempty_with_expr = tint_symbol_13[2];
   const int tint_symbol_14[2][4] = (int[2][4])0;
   const int subexpr_nested_empty[4] = tint_symbol_14[1];
@@ -30,7 +30,7 @@
   const int tint_symbol_16[4] = {5, 6, 7, 8};
   const int tint_symbol_17[2][4] = {tint_symbol_15, tint_symbol_16};
   const int subexpr_nested_nonempty[4] = tint_symbol_17[1];
-  const int tint_symbol_18[4] = {1, 42, (42 + 1), 4};
+  const int tint_symbol_18[4] = {1, x, (x + 1), 4};
   const int tint_symbol_19[2][4] = {tint_symbol_18, nested_nonempty[1][2]};
   const int subexpr_nested_nonempty_with_expr[4] = tint_symbol_19[1];
   return;
diff --git a/test/tint/array/type_constructor.wgsl.expected.msl b/test/tint/array/type_constructor.wgsl.expected.msl
index efe30ae..58c9a9f 100644
--- a/test/tint/array/type_constructor.wgsl.expected.msl
+++ b/test/tint/array/type_constructor.wgsl.expected.msl
@@ -18,7 +18,7 @@
   int const x = 42;
   tint_array<int, 4> const empty = tint_array<int, 4>{};
   tint_array<int, 4> const nonempty = tint_array<int, 4>{1, 2, 3, 4};
-  tint_array<int, 4> const nonempty_with_expr = tint_array<int, 4>{1, 42, as_type<int>((as_type<uint>(42) + as_type<uint>(1))), 4};
+  tint_array<int, 4> const nonempty_with_expr = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), 4};
   tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_empty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{};
   tint_array<int, 4> const tint_symbol_1 = tint_array<int, 4>{1, 2, 3, 4};
   tint_array<int, 4> const tint_symbol_2 = tint_array<int, 4>{5, 6, 7, 8};
@@ -29,7 +29,7 @@
   tint_array<int, 4> const tint_symbol_7 = tint_array<int, 4>{21, 22, 23, 24};
   tint_array<tint_array<int, 4>, 3> const tint_symbol_8 = tint_array<tint_array<int, 4>, 3>{tint_symbol_5, tint_symbol_6, tint_symbol_7};
   tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_symbol_4, tint_symbol_8};
-  tint_array<int, 4> const tint_symbol_9 = tint_array<int, 4>{1, 2, 42, as_type<int>((as_type<uint>(42) + as_type<uint>(1)))};
+  tint_array<int, 4> const tint_symbol_9 = tint_array<int, 4>{1, 2, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1)))};
   tint_array<int, 4> const tint_symbol_10 = tint_array<int, 4>{5, 6, 3, as_type<int>((as_type<uint>(4) + as_type<uint>(1)))};
   tint_array<tint_array<int, 4>, 3> const tint_symbol_11 = tint_array<tint_array<int, 4>, 3>{tint_symbol_9, tint_symbol_10, nonempty};
   tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty_with_expr = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_symbol_11, nested_nonempty[1]};
@@ -37,7 +37,7 @@
   int const subexpr_empty = 0;
   tint_array<int, 4> const tint_symbol_13 = tint_array<int, 4>{1, 2, 3, 4};
   int const subexpr_nonempty = 3;
-  tint_array<int, 4> const tint_symbol_14 = tint_array<int, 4>{1, 42, as_type<int>((as_type<uint>(42) + as_type<uint>(1))), 4};
+  tint_array<int, 4> const tint_symbol_14 = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), 4};
   int const subexpr_nonempty_with_expr = tint_symbol_14[2];
   tint_array<tint_array<int, 4>, 2> const tint_symbol_15 = tint_array<tint_array<int, 4>, 2>{};
   tint_array<int, 4> const subexpr_nested_empty = tint_symbol_15[1];
@@ -45,7 +45,7 @@
   tint_array<int, 4> const tint_symbol_17 = tint_array<int, 4>{5, 6, 7, 8};
   tint_array<tint_array<int, 4>, 2> const tint_symbol_18 = tint_array<tint_array<int, 4>, 2>{tint_symbol_16, tint_symbol_17};
   tint_array<int, 4> const subexpr_nested_nonempty = tint_symbol_18[1];
-  tint_array<int, 4> const tint_symbol_19 = tint_array<int, 4>{1, 42, as_type<int>((as_type<uint>(42) + as_type<uint>(1))), 4};
+  tint_array<int, 4> const tint_symbol_19 = tint_array<int, 4>{1, x, as_type<int>((as_type<uint>(x) + as_type<uint>(1))), 4};
   tint_array<tint_array<int, 4>, 2> const tint_symbol_20 = tint_array<tint_array<int, 4>, 2>{tint_symbol_19, nested_nonempty[1][2]};
   tint_array<int, 4> const subexpr_nested_nonempty_with_expr = tint_symbol_20[1];
   return;
diff --git a/test/tint/bug/tint/1083.wgsl.expected.msl b/test/tint/bug/tint/1083.wgsl.expected.msl
index 9a9ac97..08beb2b 100644
--- a/test/tint/bug/tint/1083.wgsl.expected.msl
+++ b/test/tint/bug/tint/1083.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 0;
-  int const c = (1 / 0);
+  int const c = (a / b);
   return;
 }
 
diff --git a/test/tint/bug/tint/1118.wgsl.expected.glsl b/test/tint/bug/tint/1118.wgsl.expected.glsl
index 8d15905..1452be7 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.glsl
@@ -79,7 +79,7 @@
   }
   vec4 x_34 = x_29.vEyePosition;
   vec3 x_38 = vec3(0.0f);
-  viewDirectionW = normalize((vec3(x_34.x, x_34.y, x_34.z) - vec3(0.0f)));
+  viewDirectionW = normalize((vec3(x_34.x, x_34.y, x_34.z) - x_38));
   baseColor = vec4(1.0f);
   vec4 x_52 = x_49.vDiffuseColor;
   diffuseColor = vec3(x_52.x, x_52.y, x_52.z);
@@ -87,11 +87,11 @@
   alpha = x_60;
   vec3 x_62 = vec3(0.0f);
   vec3 x_64 = vec3(0.0f);
-  normalW = normalize(-(cross(dFdx(vec3(0.0f)), dFdy(vec3(0.0f)))));
+  normalW = normalize(-(cross(dFdx(x_62), dFdy(x_64))));
   uvOffset = vec2(0.0f);
   vec4 x_74 = vec4(0.0f);
   vec4 x_76 = baseColor;
-  vec3 x_78 = (vec3(x_76.x, x_76.y, x_76.z) * vec3(vec4(0.0f).x, vec4(0.0f).y, vec4(0.0f).z));
+  vec3 x_78 = (vec3(x_76.x, x_76.y, x_76.z) * vec3(x_74.x, x_74.y, x_74.z));
   baseColor = vec4(x_78.x, x_78.y, x_78.z, baseColor.w);
   baseAmbientColor = vec3(1.0f);
   glossiness = 0.0f;
diff --git a/test/tint/bug/tint/1118.wgsl.expected.hlsl b/test/tint/bug/tint/1118.wgsl.expected.hlsl
index 715bfec..91abf60 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/1118.wgsl.expected.hlsl
@@ -51,7 +51,7 @@
   }
   const float4 x_34 = asfloat(x_29[0]);
   const float3 x_38 = (0.0f).xxx;
-  viewDirectionW = normalize((float3(x_34.x, x_34.y, x_34.z) - (0.0f).xxx));
+  viewDirectionW = normalize((float3(x_34.x, x_34.y, x_34.z) - x_38));
   baseColor = (1.0f).xxxx;
   const float4 x_52 = asfloat(x_49[0]);
   diffuseColor = float3(x_52.x, x_52.y, x_52.z);
@@ -59,11 +59,11 @@
   alpha = x_60;
   const float3 x_62 = (0.0f).xxx;
   const float3 x_64 = (0.0f).xxx;
-  normalW = normalize(-(cross(ddx((0.0f).xxx), ddy((0.0f).xxx))));
+  normalW = normalize(-(cross(ddx(x_62), ddy(x_64))));
   uvOffset = (0.0f).xx;
   const float4 x_74 = (0.0f).xxxx;
   const float4 x_76 = baseColor;
-  const float3 x_78 = (float3(x_76.x, x_76.y, x_76.z) * float3((0.0f).xxxx.x, (0.0f).xxxx.y, (0.0f).xxxx.z));
+  const float3 x_78 = (float3(x_76.x, x_76.y, x_76.z) * float3(x_74.x, x_74.y, x_74.z));
   baseColor = float4(x_78.x, x_78.y, x_78.z, baseColor.w);
   baseAmbientColor = (1.0f).xxx;
   glossiness = 0.0f;
diff --git a/test/tint/bug/tint/1118.wgsl.expected.msl b/test/tint/bug/tint/1118.wgsl.expected.msl
index aae4313..b2fc9b9 100644
--- a/test/tint/bug/tint/1118.wgsl.expected.msl
+++ b/test/tint/bug/tint/1118.wgsl.expected.msl
@@ -69,7 +69,7 @@
   }
   float4 const x_34 = (*(tint_symbol_10)).vEyePosition;
   float3 const x_38 = float3(0.0f);
-  viewDirectionW = normalize((float3(x_34[0], x_34[1], x_34[2]) - float3(0.0f)));
+  viewDirectionW = normalize((float3(x_34[0], x_34[1], x_34[2]) - x_38));
   baseColor = float4(1.0f);
   float4 const x_52 = (*(tint_symbol_11)).vDiffuseColor;
   diffuseColor = float3(x_52[0], x_52[1], x_52[2]);
@@ -77,11 +77,11 @@
   alpha = x_60;
   float3 const x_62 = float3(0.0f);
   float3 const x_64 = float3(0.0f);
-  normalW = normalize(-(cross(dfdx(float3(0.0f)), dfdy(float3(0.0f)))));
+  normalW = normalize(-(cross(dfdx(x_62), dfdy(x_64))));
   uvOffset = float2(0.0f);
   float4 const x_74 = float4(0.0f);
   float4 const x_76 = baseColor;
-  float3 const x_78 = (float3(x_76[0], x_76[1], x_76[2]) * float3(float4(0.0f)[0], float4(0.0f)[1], float4(0.0f)[2]));
+  float3 const x_78 = (float3(x_76[0], x_76[1], x_76[2]) * float3(x_74[0], x_74[1], x_74[2]));
   float4 const x_79 = baseColor;
   baseColor = float4(x_78[0], x_78[1], x_78[2], x_79[3]);
   baseAmbientColor = float3(1.0f);
diff --git a/test/tint/bug/tint/1121.wgsl.expected.glsl b/test/tint/bug/tint/1121.wgsl.expected.glsl
index 48d14d6..5133c72 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.glsl
@@ -81,8 +81,8 @@
   {
     for(int y_1 = 0; (y_1 < 2); y_1 = (y_1 + 1)) {
       {
-        for(int x_1 = 0; (x_1 < 2); x_1 = (x_1 + 1)) {
-          ivec2 tilePixel0Idx = ivec2((x_1 * 16), (y_1 * 16));
+        for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = (x_1 + 1)) {
+          ivec2 tilePixel0Idx = ivec2((x_1 * TILE_SIZE), (y_1 * TILE_SIZE));
           vec2 floorCoord = (((2.0f * vec2(tilePixel0Idx)) / uniforms.fullScreenSize.xy) - vec2(1.0f));
           vec2 ceilCoord = (((2.0f * vec2((tilePixel0Idx + ivec2(16)))) / uniforms.fullScreenSize.xy) - vec2(1.0f));
           vec2 viewFloorCoord = vec2((((-(viewNear) * floorCoord.x) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * floorCoord.y) - (M[2][1] * viewNear)) / M[1][1]));
@@ -115,7 +115,7 @@
             }
           }
           if ((dp >= 0.0f)) {
-            uint tileId = uint((x_1 + (y_1 * 2)));
+            uint tileId = uint((x_1 + (y_1 * TILE_COUNT_X)));
             bool tint_tmp = (tileId < 0u);
             if (!tint_tmp) {
               tint_tmp = (tileId >= config.numTiles);
diff --git a/test/tint/bug/tint/1121.wgsl.expected.hlsl b/test/tint/bug/tint/1121.wgsl.expected.hlsl
index 6945bbf..6f609be 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.hlsl
@@ -55,8 +55,8 @@
   {
     [loop] for(int y_1 = 0; (y_1 < 2); y_1 = (y_1 + 1)) {
       {
-        [loop] for(int x_1 = 0; (x_1 < 2); x_1 = (x_1 + 1)) {
-          int2 tilePixel0Idx = int2((x_1 * 16), (y_1 * 16));
+        [loop] for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = (x_1 + 1)) {
+          int2 tilePixel0Idx = int2((x_1 * TILE_SIZE), (y_1 * TILE_SIZE));
           float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / asfloat(uniforms[10]).xy) - (1.0f).xx);
           float2 ceilCoord = (((2.0f * float2((tilePixel0Idx + (16).xx))) / asfloat(uniforms[10]).xy) - (1.0f).xx);
           float2 viewFloorCoord = float2((((-(viewNear) * floorCoord.x) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * floorCoord.y) - (M[2][1] * viewNear)) / M[1][1]));
@@ -89,7 +89,7 @@
             }
           }
           if ((dp >= 0.0f)) {
-            uint tileId = uint((x_1 + (y_1 * 2)));
+            uint tileId = uint((x_1 + (y_1 * TILE_COUNT_X)));
             bool tint_tmp = (tileId < 0u);
             if (!tint_tmp) {
               tint_tmp = (tileId >= config[0].y);
diff --git a/test/tint/bug/tint/1121.wgsl.expected.msl b/test/tint/bug/tint/1121.wgsl.expected.msl
index 5e8c10f..8e2584d 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.msl
+++ b/test/tint/bug/tint/1121.wgsl.expected.msl
@@ -84,9 +84,9 @@
   int const TILE_SIZE = 16;
   int const TILE_COUNT_X = 2;
   int const TILE_COUNT_Y = 2;
-  for(int y_1 = 0; (y_1 < 2); y_1 = as_type<int>((as_type<uint>(y_1) + as_type<uint>(1)))) {
-    for(int x_1 = 0; (x_1 < 2); x_1 = as_type<int>((as_type<uint>(x_1) + as_type<uint>(1)))) {
-      int2 tilePixel0Idx = int2(as_type<int>((as_type<uint>(x_1) * as_type<uint>(16))), as_type<int>((as_type<uint>(y_1) * as_type<uint>(16))));
+  for(int y_1 = 0; (y_1 < TILE_COUNT_Y); y_1 = as_type<int>((as_type<uint>(y_1) + as_type<uint>(1)))) {
+    for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = as_type<int>((as_type<uint>(x_1) + as_type<uint>(1)))) {
+      int2 tilePixel0Idx = int2(as_type<int>((as_type<uint>(x_1) * as_type<uint>(TILE_SIZE))), as_type<int>((as_type<uint>(y_1) * as_type<uint>(TILE_SIZE))));
       float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / float4((*(tint_symbol_3)).fullScreenSize).xy) - float2(1.0f));
       float2 ceilCoord = (((2.0f * float2(as_type<int2>((as_type<uint2>(tilePixel0Idx) + as_type<uint2>(int2(16)))))) / float4((*(tint_symbol_3)).fullScreenSize).xy) - float2(1.0f));
       float2 viewFloorCoord = float2((((-(viewNear) * floorCoord[0]) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * floorCoord[1]) - (M[2][1] * viewNear)) / M[1][1]));
@@ -117,7 +117,7 @@
         dp = (dp + fmin(0.0f, dot(p, frustumPlanes[i])));
       }
       if ((dp >= 0.0f)) {
-        uint tileId = uint(as_type<int>((as_type<uint>(x_1) + as_type<uint>(as_type<int>((as_type<uint>(y_1) * as_type<uint>(2)))))));
+        uint tileId = uint(as_type<int>((as_type<uint>(x_1) + as_type<uint>(as_type<int>((as_type<uint>(y_1) * as_type<uint>(TILE_COUNT_X)))))));
         if (((tileId < 0u) || (tileId >= (*(tint_symbol_1)).numTiles))) {
           continue;
         }
diff --git a/test/tint/bug/tint/1332.wgsl.expected.msl b/test/tint/bug/tint/1332.wgsl.expected.msl
index 57b645d..7ae8771 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.msl
+++ b/test/tint/bug/tint/1332.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void compute_main() {
   float const a = 1.230000019f;
-  float b = fmax(1.230000019f, 1.17549435e-38f);
+  float b = fmax(a, 1.17549435e-38f);
   return;
 }
 
diff --git a/test/tint/bug/tint/825.wgsl.expected.glsl b/test/tint/bug/tint/825.wgsl.expected.glsl
index b9b91ef..9c9c067 100644
--- a/test/tint/bug/tint/825.wgsl.expected.glsl
+++ b/test/tint/bug/tint/825.wgsl.expected.glsl
@@ -8,6 +8,6 @@
   int i = 0;
   int j = 0;
   mat2 m = mat2(vec2(1.0f, 2.0f), vec2(3.0f, 4.0f));
-  float f_1 = mat2(vec2(1.0f, 2.0f), vec2(3.0f, 4.0f))[i][j];
+  float f_1 = m[i][j];
 }
 
diff --git a/test/tint/bug/tint/825.wgsl.expected.hlsl b/test/tint/bug/tint/825.wgsl.expected.hlsl
index 534207a..f38475d 100644
--- a/test/tint/bug/tint/825.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/825.wgsl.expected.hlsl
@@ -7,5 +7,5 @@
   int i = 0;
   int j = 0;
   const float2x2 m = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
-  const float f_1 = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))[i][j];
+  const float f_1 = m[i][j];
 }
diff --git a/test/tint/bug/tint/825.wgsl.expected.msl b/test/tint/bug/tint/825.wgsl.expected.msl
index 0edd1b4..b3f1c1a 100644
--- a/test/tint/bug/tint/825.wgsl.expected.msl
+++ b/test/tint/bug/tint/825.wgsl.expected.msl
@@ -5,6 +5,6 @@
   int i = 0;
   int j = 0;
   float2x2 const m = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
-  float const f_1 = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))[i][j];
+  float const f_1 = m[i][j];
 }
 
diff --git a/test/tint/bug/tint/827.wgsl.expected.glsl b/test/tint/bug/tint/827.wgsl.expected.glsl
index 562b29a..482c7d3 100644
--- a/test/tint/bug/tint/827.wgsl.expected.glsl
+++ b/test/tint/bug/tint/827.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 } result;
 uniform highp sampler2D tex_1;
 void tint_symbol(uvec3 GlobalInvocationId) {
-  result.values[((GlobalInvocationId.y * 128u) + GlobalInvocationId.x)] = texelFetch(tex_1, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
+  result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex_1, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/bug/tint/827.wgsl.expected.hlsl b/test/tint/bug/tint/827.wgsl.expected.hlsl
index 936812e..bd8458c 100644
--- a/test/tint/bug/tint/827.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/827.wgsl.expected.hlsl
@@ -8,7 +8,7 @@
 };
 
 void main_inner(uint3 GlobalInvocationId) {
-  result.Store((4u * ((GlobalInvocationId.y * 128u) + GlobalInvocationId.x)), asuint(tex.Load(int3(int(GlobalInvocationId.x), int(GlobalInvocationId.y), 0)).x));
+  result.Store((4u * ((GlobalInvocationId.y * width) + GlobalInvocationId.x)), asuint(tex.Load(int3(int(GlobalInvocationId.x), int(GlobalInvocationId.y), 0)).x));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/827.wgsl.expected.msl b/test/tint/bug/tint/827.wgsl.expected.msl
index 4ea4405..d915798 100644
--- a/test/tint/bug/tint/827.wgsl.expected.msl
+++ b/test/tint/bug/tint/827.wgsl.expected.msl
@@ -21,7 +21,7 @@
 constant uint width = 128u;
 
 void tint_symbol_inner(uint3 GlobalInvocationId, device Result* const tint_symbol_1, depth2d<float, access::sample> tint_symbol_2) {
-  (*(tint_symbol_1)).values[((GlobalInvocationId[1] * 128u) + GlobalInvocationId[0])] = tint_symbol_2.read(uint2(int2(int(GlobalInvocationId[0]), int(GlobalInvocationId[1]))), 0);
+  (*(tint_symbol_1)).values[((GlobalInvocationId[1] * width) + GlobalInvocationId[0])] = tint_symbol_2.read(uint2(int2(int(GlobalInvocationId[0]), int(GlobalInvocationId[1]))), 0);
 }
 
 kernel void tint_symbol(device Result* tint_symbol_3 [[buffer(0)]], depth2d<float, access::sample> tint_symbol_4 [[texture(0)]], uint3 GlobalInvocationId [[thread_position_in_grid]]) {
diff --git a/test/tint/bug/tint/913.wgsl.expected.glsl b/test/tint/bug/tint/913.wgsl.expected.glsl
index edf3ff7..bd770ef 100644
--- a/test/tint/bug/tint/913.wgsl.expected.glsl
+++ b/test/tint/bug/tint/913.wgsl.expected.glsl
@@ -46,7 +46,7 @@
   if ((tint_tmp)) {
     bool tint_tmp_3 = success;
     if (tint_tmp_3) {
-      tint_tmp_3 = all(equal(texelFetch(dst_1, ivec2(dstTexCoord), 0), vec4(0.0f, 1.0f, 0.0f, 1.0f)));
+      tint_tmp_3 = all(equal(texelFetch(dst_1, ivec2(dstTexCoord), 0), nonCoveredColor));
     }
     success = (tint_tmp_3);
   } else {
diff --git a/test/tint/bug/tint/913.wgsl.expected.hlsl b/test/tint/bug/tint/913.wgsl.expected.hlsl
index a6943bb..2c8eb01 100644
--- a/test/tint/bug/tint/913.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/913.wgsl.expected.hlsl
@@ -38,7 +38,7 @@
   if ((tint_tmp_2)) {
     bool tint_tmp_5 = success;
     if (tint_tmp_5) {
-      tint_tmp_5 = all((tint_symbol.Load(int3(int2(dstTexCoord), 0)) == float4(0.0f, 1.0f, 0.0f, 1.0f)));
+      tint_tmp_5 = all((tint_symbol.Load(int3(int2(dstTexCoord), 0)) == nonCoveredColor));
     }
     success = (tint_tmp_5);
   } else {
diff --git a/test/tint/bug/tint/913.wgsl.expected.msl b/test/tint/bug/tint/913.wgsl.expected.msl
index 3acacc7..06f2ded 100644
--- a/test/tint/bug/tint/913.wgsl.expected.msl
+++ b/test/tint/bug/tint/913.wgsl.expected.msl
@@ -37,7 +37,7 @@
   float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
   bool success = true;
   if (((((dstTexCoord[0] < (*(tint_symbol_9)).dstCopyOrigin[0]) || (dstTexCoord[1] < (*(tint_symbol_9)).dstCopyOrigin[1])) || (dstTexCoord[0] >= ((*(tint_symbol_9)).dstCopyOrigin[0] + (*(tint_symbol_9)).copySize[0]))) || (dstTexCoord[1] >= ((*(tint_symbol_9)).dstCopyOrigin[1] + (*(tint_symbol_9)).copySize[1])))) {
-    success = (success && all((tint_symbol_8.read(uint2(int2(dstTexCoord)), 0) == float4(0.0f, 1.0f, 0.0f, 1.0f))));
+    success = (success && all((tint_symbol_8.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
   } else {
     uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_9)).dstCopyOrigin) + (*(tint_symbol_9)).srcCopyOrigin);
     if (((*(tint_symbol_9)).dstTextureFlipY == 1u)) {
diff --git a/test/tint/bug/tint/914.wgsl.expected.glsl b/test/tint/bug/tint/914.wgsl.expected.glsl
index 7e66546..5ec38c1 100644
--- a/test/tint/bug/tint/914.wgsl.expected.glsl
+++ b/test/tint/bug/tint/914.wgsl.expected.glsl
@@ -71,32 +71,32 @@
     }
   }
   barrier();
-  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 = (((uniforms.dimInner - 1u) / 64u) + 1u);
+  uint tileRow = (local_id.y * RowPerThread);
+  uint tileCol = (local_id.x * ColPerThread);
+  uint globalRow = (global_id.y * RowPerThread);
+  uint globalCol = (global_id.x * ColPerThread);
+  uint numTiles = (((uniforms.dimInner - 1u) / TileInner) + 1u);
   float acc[16] = float[16](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   float ACached = 0.0f;
   float BCached[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
   {
-    for(uint index = 0u; (index < (4u * 4u)); index = (index + 1u)) {
+    for(uint index = 0u; (index < (RowPerThread * ColPerThread)); index = (index + 1u)) {
       acc[index] = 0.0f;
     }
   }
-  uint ColPerThreadA = (64u / 16u);
+  uint ColPerThreadA = (TileInner / 16u);
   uint tileColA = (local_id.x * ColPerThreadA);
-  uint RowPerThreadB = (64u / 16u);
+  uint RowPerThreadB = (TileInner / 16u);
   uint tileRowB = (local_id.y * RowPerThreadB);
   {
     for(uint t = 0u; (t < numTiles); t = (t + 1u)) {
       {
-        for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+        for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
           {
             for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
               uint inputRow = (tileRow + innerRow);
               uint inputCol = (tileColA + innerCol);
-              float tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * 64u) + inputCol));
+              float tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
               mm_Asub[inputRow][inputCol] = tint_symbol_1;
             }
           }
@@ -105,10 +105,10 @@
       {
         for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
           {
-            for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
+            for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
               uint inputRow = (tileRowB + innerRow);
               uint inputCol = (tileCol + innerCol);
-              float tint_symbol_2 = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
+              float tint_symbol_2 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
               mm_Bsub[innerCol][inputCol] = tint_symbol_2;
             }
           }
@@ -116,18 +116,18 @@
       }
       barrier();
       {
-        for(uint k = 0u; (k < 64u); k = (k + 1u)) {
+        for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
           {
-            for(uint inner = 0u; (inner < 4u); inner = (inner + 1u)) {
+            for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
               BCached[inner] = mm_Bsub[k][(tileCol + inner)];
             }
           }
           {
-            for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+            for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
               ACached = mm_Asub[(tileRow + innerRow)][k];
               {
-                for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
-                  uint index = ((innerRow * 4u) + innerCol);
+                for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
+                  uint index = ((innerRow * ColPerThread) + innerCol);
                   acc[index] = (acc[index] + (ACached * BCached[innerCol]));
                 }
               }
@@ -139,10 +139,10 @@
     }
   }
   {
-    for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+    for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
       {
-        for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
-          uint index = ((innerRow * 4u) + innerCol);
+        for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
+          uint index = ((innerRow * ColPerThread) + innerCol);
           mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index]);
         }
       }
diff --git a/test/tint/bug/tint/914.wgsl.expected.hlsl b/test/tint/bug/tint/914.wgsl.expected.hlsl
index 5652d5c..5dbfaa1 100644
--- a/test/tint/bug/tint/914.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/914.wgsl.expected.hlsl
@@ -65,32 +65,32 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  const uint tileRow = (local_id.y * 4u);
-  const uint tileCol = (local_id.x * 4u);
-  const uint globalRow = (global_id.y * 4u);
-  const uint globalCol = (global_id.x * 4u);
-  const uint numTiles = (((uniforms[0].y - 1u) / 64u) + 1u);
+  const uint tileRow = (local_id.y * RowPerThread);
+  const uint tileCol = (local_id.x * ColPerThread);
+  const uint globalRow = (global_id.y * RowPerThread);
+  const uint globalCol = (global_id.x * ColPerThread);
+  const uint numTiles = (((uniforms[0].y - 1u) / TileInner) + 1u);
   float acc[16] = (float[16])0;
   float ACached = 0.0f;
   float BCached[4] = (float[4])0;
   {
-    [loop] for(uint index = 0u; (index < (4u * 4u)); index = (index + 1u)) {
+    [loop] for(uint index = 0u; (index < (RowPerThread * ColPerThread)); index = (index + 1u)) {
       acc[index] = 0.0f;
     }
   }
-  const uint ColPerThreadA = (64u / 16u);
+  const uint ColPerThreadA = (TileInner / 16u);
   const uint tileColA = (local_id.x * ColPerThreadA);
-  const uint RowPerThreadB = (64u / 16u);
+  const uint RowPerThreadB = (TileInner / 16u);
   const uint tileRowB = (local_id.y * RowPerThreadB);
   {
     [loop] for(uint t = 0u; (t < numTiles); t = (t + 1u)) {
       {
-        [loop] for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+        [loop] for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
           {
             [loop] for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
               const uint inputRow = (tileRow + innerRow);
               const uint inputCol = (tileColA + innerCol);
-              const float tint_symbol_2 = mm_readA((globalRow + innerRow), ((t * 64u) + inputCol));
+              const float tint_symbol_2 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
               mm_Asub[inputRow][inputCol] = tint_symbol_2;
             }
           }
@@ -99,10 +99,10 @@
       {
         [loop] for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
           {
-            [loop] for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
+            [loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
               const uint inputRow = (tileRowB + innerRow);
               const uint inputCol = (tileCol + innerCol);
-              const float tint_symbol_3 = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol));
+              const float tint_symbol_3 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
               mm_Bsub[innerCol][inputCol] = tint_symbol_3;
             }
           }
@@ -110,18 +110,18 @@
       }
       GroupMemoryBarrierWithGroupSync();
       {
-        [loop] for(uint k = 0u; (k < 64u); k = (k + 1u)) {
+        [loop] for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
           {
-            [loop] for(uint inner = 0u; (inner < 4u); inner = (inner + 1u)) {
+            [loop] for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
               BCached[inner] = mm_Bsub[k][(tileCol + inner)];
             }
           }
           {
-            [loop] for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+            [loop] for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
               ACached = mm_Asub[(tileRow + innerRow)][k];
               {
-                [loop] for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
-                  const uint index = ((innerRow * 4u) + innerCol);
+                [loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
+                  const uint index = ((innerRow * ColPerThread) + innerCol);
                   acc[index] = (acc[index] + (ACached * BCached[innerCol]));
                 }
               }
@@ -133,10 +133,10 @@
     }
   }
   {
-    [loop] for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+    [loop] for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
       {
-        [loop] for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
-          const uint index = ((innerRow * 4u) + innerCol);
+        [loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
+          const uint index = ((innerRow * ColPerThread) + innerCol);
           mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index]);
         }
       }
diff --git a/test/tint/bug/tint/914.wgsl.expected.msl b/test/tint/bug/tint/914.wgsl.expected.msl
index b7a253c..94c3891 100644
--- a/test/tint/bug/tint/914.wgsl.expected.msl
+++ b/test/tint/bug/tint/914.wgsl.expected.msl
@@ -65,56 +65,56 @@
     (*(tint_symbol_10))[i][i_1] = 0.0f;
   }
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  uint const tileRow = (local_id[1] * 4u);
-  uint const tileCol = (local_id[0] * 4u);
-  uint const globalRow = (global_id[1] * 4u);
-  uint const globalCol = (global_id[0] * 4u);
-  uint const numTiles = ((((*(tint_symbol_11)).dimInner - 1u) / 64u) + 1u);
+  uint const tileRow = (local_id[1] * RowPerThread);
+  uint const tileCol = (local_id[0] * ColPerThread);
+  uint const globalRow = (global_id[1] * RowPerThread);
+  uint const globalCol = (global_id[0] * ColPerThread);
+  uint const numTiles = ((((*(tint_symbol_11)).dimInner - 1u) / TileInner) + 1u);
   tint_array<float, 16> acc = {};
   float ACached = 0.0f;
   tint_array<float, 4> BCached = {};
-  for(uint index = 0u; (index < (4u * 4u)); index = (index + 1u)) {
+  for(uint index = 0u; (index < (RowPerThread * ColPerThread)); index = (index + 1u)) {
     acc[index] = 0.0f;
   }
-  uint const ColPerThreadA = (64u / 16u);
+  uint const ColPerThreadA = (TileInner / 16u);
   uint const tileColA = (local_id[0] * ColPerThreadA);
-  uint const RowPerThreadB = (64u / 16u);
+  uint const RowPerThreadB = (TileInner / 16u);
   uint const tileRowB = (local_id[1] * RowPerThreadB);
   for(uint t = 0u; (t < numTiles); t = (t + 1u)) {
-    for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+    for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
       for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
         uint const inputRow = (tileRow + innerRow);
         uint const inputCol = (tileColA + innerCol);
-        float const tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * 64u) + inputCol), tint_symbol_11, tint_symbol_12);
+        float const tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol), tint_symbol_11, tint_symbol_12);
         (*(tint_symbol_9))[inputRow][inputCol] = tint_symbol_1;
       }
     }
     for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
-      for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
+      for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
         uint const inputRow = (tileRowB + innerRow);
         uint const inputCol = (tileCol + innerCol);
-        float const tint_symbol_2 = mm_readB(((t * 64u) + inputRow), (globalCol + innerCol), tint_symbol_11, tint_symbol_13);
+        float const tint_symbol_2 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol), tint_symbol_11, tint_symbol_13);
         (*(tint_symbol_10))[innerCol][inputCol] = tint_symbol_2;
       }
     }
     threadgroup_barrier(mem_flags::mem_threadgroup);
-    for(uint k = 0u; (k < 64u); k = (k + 1u)) {
-      for(uint inner = 0u; (inner < 4u); inner = (inner + 1u)) {
+    for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
+      for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
         BCached[inner] = (*(tint_symbol_10))[k][(tileCol + inner)];
       }
-      for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
+      for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
         ACached = (*(tint_symbol_9))[(tileRow + innerRow)][k];
-        for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
-          uint const index = ((innerRow * 4u) + innerCol);
+        for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
+          uint const index = ((innerRow * ColPerThread) + innerCol);
           acc[index] = (acc[index] + (ACached * BCached[innerCol]));
         }
       }
     }
     threadgroup_barrier(mem_flags::mem_threadgroup);
   }
-  for(uint innerRow = 0u; (innerRow < 4u); innerRow = (innerRow + 1u)) {
-    for(uint innerCol = 0u; (innerCol < 4u); innerCol = (innerCol + 1u)) {
-      uint const index = ((innerRow * 4u) + innerCol);
+  for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
+    for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
+      uint const index = ((innerRow * ColPerThread) + innerCol);
       mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index], tint_symbol_11, tint_symbol_14);
     }
   }
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl
index 511d640..4eea93e 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   mat3 a = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
   mat3 b = mat3(vec3(-1.0f, -2.0f, -3.0f), vec3(-4.0f, -5.0f, -6.0f), vec3(-7.0f, -8.0f, -9.0f));
-  mat3 r = (mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f)) + mat3(vec3(-1.0f, -2.0f, -3.0f), vec3(-4.0f, -5.0f, -6.0f), vec3(-7.0f, -8.0f, -9.0f)));
+  mat3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.hlsl
index 290b4d2..e20dd07 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3x3 a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   const float3x3 b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
-  const float3x3 r = (float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)) + float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f)));
+  const float3x3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.msl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.msl
index ff6e1c7..4c6ced5 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3x3 const a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3x3 const b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
-  float3x3 const r = (float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)) + float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f)));
+  float3x3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.msl
index 18b64e6..bcb61ac 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
-  float const r = (1.0f + 2.0f);
+  float const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.msl
index 470e036..e77d38f 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = as_type<int>((as_type<uint>(1) + as_type<uint>(2)));
+  int const r = as_type<int>((as_type<uint>(a) + as_type<uint>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.msl
index 6ffd843..ca9e441 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u + 2u);
+  uint const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl
index 605223e..0193ade 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   float a = 4.0f;
   vec3 b = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (4.0f + vec3(1.0f, 2.0f, 3.0f));
+  vec3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.hlsl
index 05d3fdc..bab272b 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float a = 4.0f;
   const float3 b = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (4.0f + float3(1.0f, 2.0f, 3.0f));
+  const float3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.msl
index 3ac98f9..aad4aba 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
-  float3 const r = (4.0f + float3(1.0f, 2.0f, 3.0f));
+  float3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl
index 34bc37d..d2ff14e 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(1, 2, 3);
-  ivec3 r = (4 + ivec3(1, 2, 3));
+  ivec3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.hlsl
index e6fa54c..1b2562e 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(1, 2, 3);
-  const int3 r = (4 + int3(1, 2, 3));
+  const int3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.msl
index d9db51e..46f1909 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
-  int3 const r = as_type<int3>((as_type<uint>(4) + as_type<uint3>(int3(1, 2, 3))));
+  int3 const r = as_type<int3>((as_type<uint>(a) + as_type<uint3>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl
index af483c4..8e4d546 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(1u, 2u, 3u);
-  uvec3 r = (4u + uvec3(1u, 2u, 3u));
+  uvec3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.hlsl
index 9ce721e..5b43e9e 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(1u, 2u, 3u);
-  const uint3 r = (4u + uint3(1u, 2u, 3u));
+  const uint3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.msl
index c402d86..71345d5 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
-  uint3 const r = (4u + uint3(1u, 2u, 3u));
+  uint3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl
index 9e64562..599cb04 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) + 4.0f);
+  vec3 r = (a + 4.0f);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.hlsl
index 2dfd9ed..a7fe143 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) + 4.0f);
+  const float3 r = (a + 4.0f);
   return;
 }
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.msl
index aeaadc8..e156063 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) + 4.0f);
+  float3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl
index 945deb1..e9e5f02 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) + 4);
+  ivec3 r = (a + 4);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.hlsl
index 1e54d92..5875ef7 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) + 4);
+  const int3 r = (a + 4);
   return;
 }
diff --git a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.msl
index b747cf5..89306cc 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) + as_type<uint>(4)));
+  int3 const r = as_type<int3>((as_type<uint3>(a) + as_type<uint>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl
index d45dfcb..2388aab 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) + 4u);
+  uvec3 r = (a + 4u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.hlsl
index 97eb89e..056ee37 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) + 4u);
+  const uint3 r = (a + 4u);
   return;
 }
diff --git a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.msl
index 55c174f..830bcdd 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
-  uint3 const r = (uint3(1u, 2u, 3u) + 4u);
+  uint3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl
index eb10ce3..84aae31 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(4.0f, 5.0f, 6.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) + vec3(4.0f, 5.0f, 6.0f));
+  vec3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.hlsl
index 75be70f..2fa34ec 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(4.0f, 5.0f, 6.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) + float3(4.0f, 5.0f, 6.0f));
+  const float3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.msl
index 2048839..011652a 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) + float3(4.0f, 5.0f, 6.0f));
+  float3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl
index cad5a2d..7c6081d 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) + ivec3(4, 5, 6));
+  ivec3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.hlsl
index 2b36afd..3ff77a0 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) + int3(4, 5, 6));
+  const int3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.msl
index 528b091..54d88c7 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) + as_type<uint3>(int3(4, 5, 6))));
+  int3 const r = as_type<int3>((as_type<uint3>(a) + as_type<uint3>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl
index c7e9e4a..ef61fd9 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) + uvec3(4u, 5u, 6u));
+  uvec3 r = (a + b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.hlsl
index c39ce79..5bf8554 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) + uint3(4u, 5u, 6u));
+  const uint3 r = (a + b);
   return;
 }
diff --git a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.msl
index bd0cb07..5299d8a 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) + uint3(4u, 5u, 6u));
+  uint3 const r = (a + b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.msl b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.msl
index 8fa2a8d..48bc530 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   bool const a = true;
   bool const b = false;
-  bool const r = bool(true & false);
+  bool const r = bool(a & b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.msl
index 2b266ba..bb30c81 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = (1 & 2);
+  int const r = (a & b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.msl
index 1b82564..b3ca220 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u & 2u);
+  uint const r = (a & b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.glsl b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.glsl
index 0c1559b..2c08551 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   bvec3 a = bvec3(true, true, false);
   bvec3 b = bvec3(true, false, true);
-  bvec3 r = bvec3(uvec3(bvec3(true, true, false)) & uvec3(bvec3(true, false, true)));
+  bvec3 r = bvec3(uvec3(a) & uvec3(b));
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.hlsl
index 564bcdc..0975dc9 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const bool3 a = bool3(true, true, false);
   const bool3 b = bool3(true, false, true);
-  const bool3 r = (bool3(true, true, false) & bool3(true, false, true));
+  const bool3 r = (a & b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.msl b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.msl
index c5bc9d6..f8eed1d 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   bool3 const a = bool3(true, true, false);
   bool3 const b = bool3(true, false, true);
-  bool3 const r = (bool3(true, true, false) & bool3(true, false, true));
+  bool3 const r = (a & b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl
index b79a8c3..96b64b5 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) & ivec3(4, 5, 6));
+  ivec3 r = (a & b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.hlsl
index 9b6a17d..34f8f47 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) & int3(4, 5, 6));
+  const int3 r = (a & b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.msl
index 70394ce..22dbd49 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = (int3(1, 2, 3) & int3(4, 5, 6));
+  int3 const r = (a & b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl
index ff9381a..5f0ea43 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) & uvec3(4u, 5u, 6u));
+  uvec3 r = (a & b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.hlsl
index 9eb1974..8e74758 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) & uint3(4u, 5u, 6u));
+  const uint3 r = (a & b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.msl
index db3f35c..f0aefd1 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) & uint3(4u, 5u, 6u));
+  uint3 const r = (a & b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.msl
index 8045ee2..b3bbf94 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = (1 | 2);
+  int const r = (a | b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.msl
index fc0ff27..ca18514 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u | 2u);
+  uint const r = (a | b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl
index b651abf..7da6419 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) | ivec3(4, 5, 6));
+  ivec3 r = (a | b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.hlsl
index af9e881..6d95413 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) | int3(4, 5, 6));
+  const int3 r = (a | b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.msl
index 372dd5e..5096a8c 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = (int3(1, 2, 3) | int3(4, 5, 6));
+  int3 const r = (a | b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl
index 0f96a6e..0300be8 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) | uvec3(4u, 5u, 6u));
+  uvec3 r = (a | b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.hlsl
index 5d2c6c2..4e2c7a5 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) | uint3(4u, 5u, 6u));
+  const uint3 r = (a | b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.msl
index dc5593b..f2f90d0 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) | uint3(4u, 5u, 6u));
+  uint3 const r = (a | b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.msl
index 1907ac1..62360a8 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = (1 ^ 2);
+  int const r = (a ^ b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.msl
index 109dbdd..8093c0c 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u ^ 2u);
+  uint const r = (a ^ b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl
index ff4d37a..5ad1563 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) ^ ivec3(4, 5, 6));
+  ivec3 r = (a ^ b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.hlsl
index 17aabc1..db0a3c1 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) ^ int3(4, 5, 6));
+  const int3 r = (a ^ b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.msl
index 709f209..82c280b 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = (int3(1, 2, 3) ^ int3(4, 5, 6));
+  int3 const r = (a ^ b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl
index 3f86ed9..a2f9017 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) ^ uvec3(4u, 5u, 6u));
+  uvec3 r = (a ^ b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.hlsl
index 264f335..e29687a 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) ^ uint3(4u, 5u, 6u));
+  const uint3 r = (a ^ b);
   return;
 }
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.msl
index 13bf9bb..d77b0b5 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) ^ uint3(4u, 5u, 6u));
+  uint3 const r = (a ^ b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.msl
index eac6559..5268a5e 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
-  float const r = (1.0f / 2.0f);
+  float const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.msl
index baa894f..17d1709 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = (1 / 2);
+  int const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.msl
index 729468b..fa9d9e7 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u / 2u);
+  uint const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl
index 2eeaa44..9e3345b 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   float a = 4.0f;
   vec3 b = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (4.0f / vec3(1.0f, 2.0f, 3.0f));
+  vec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.hlsl
index bb182e4..3eabba0 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float a = 4.0f;
   const float3 b = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (4.0f / float3(1.0f, 2.0f, 3.0f));
+  const float3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.msl
index 17e61b0..1fed91b 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
-  float3 const r = (4.0f / float3(1.0f, 2.0f, 3.0f));
+  float3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl
index 441e7e5..94f8b1f 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(1, 2, 3);
-  ivec3 r = (4 / ivec3(1, 2, 3));
+  ivec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.hlsl
index 3ab3785..cb4a95b 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(1, 2, 3);
-  const int3 r = (4 / int3(1, 2, 3));
+  const int3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.msl
index 06f9014..4124223 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
-  int3 const r = (4 / int3(1, 2, 3));
+  int3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl
index 8998c23..ff9ebbe 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(1u, 2u, 3u);
-  uvec3 r = (4u / uvec3(1u, 2u, 3u));
+  uvec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.hlsl
index 702206e..8942ff8 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(1u, 2u, 3u);
-  const uint3 r = (4u / uint3(1u, 2u, 3u));
+  const uint3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.msl
index 766be09..aa59c35 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
-  uint3 const r = (4u / uint3(1u, 2u, 3u));
+  uint3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl
index e48639a..822a74d 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) / 4.0f);
+  vec3 r = (a / 4.0f);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.hlsl
index e665237..f1645a2 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) / 4.0f);
+  const float3 r = (a / 4.0f);
   return;
 }
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.msl
index 9561edc..8c1ca16 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) / 4.0f);
+  float3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl
index 4b2debc..8656015 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) / 4);
+  ivec3 r = (a / 4);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.hlsl
index a3ed23f..672f46e 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) / 4);
+  const int3 r = (a / 4);
   return;
 }
diff --git a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.msl
index ab13b2b..73678c8 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
-  int3 const r = (int3(1, 2, 3) / 4);
+  int3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl
index 3a0129d..fbe58d4 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) / 4u);
+  uvec3 r = (a / 4u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.hlsl
index 3bbd4db..2f4dc9c 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) / 4u);
+  const uint3 r = (a / 4u);
   return;
 }
diff --git a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.msl
index 0c3c20e..749829b 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
-  uint3 const r = (uint3(1u, 2u, 3u) / 4u);
+  uint3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl
index 27d6b90..d598d9e 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(4.0f, 5.0f, 6.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) / vec3(4.0f, 5.0f, 6.0f));
+  vec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.hlsl
index 0fb0d4d..7ae0123 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(4.0f, 5.0f, 6.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) / float3(4.0f, 5.0f, 6.0f));
+  const float3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.msl
index e17cadd..a2c6698 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) / float3(4.0f, 5.0f, 6.0f));
+  float3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl
index 1a916cd..6d61168 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) / ivec3(4, 5, 6));
+  ivec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.hlsl
index da9950b..33a4443 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) / int3(4, 5, 6));
+  const int3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.msl
index 811a941..bb0f942 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = (int3(1, 2, 3) / int3(4, 5, 6));
+  int3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl
index fa2d83f..75013bc 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) / uvec3(4u, 5u, 6u));
+  uvec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.hlsl
index b920737..815ad9b 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) / uint3(4u, 5u, 6u));
+  const uint3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.msl
index 737182b..bfddf5a 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) / uint3(4u, 5u, 6u));
+  uint3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl
index 2677a3f..b0953f8 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 0.0f;
-  float const r = (1.0f / 0.0f);
+  float const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl
index c3a4d3d..0923684 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 0;
-  int const r = (1 / 0);
+  int const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl
index f1389ec..2c1b78a 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 0u;
-  uint const r = (1u / 0u);
+  uint const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl
index 652cd69..7589294 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   float a = 4.0f;
   vec3 b = vec3(0.0f, 2.0f, 0.0f);
-  vec3 r = (4.0f / vec3(0.0f, 2.0f, 0.0f));
+  vec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.hlsl
index 80d78f2..85db3bf 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float a = 4.0f;
   const float3 b = float3(0.0f, 2.0f, 0.0f);
-  const float3 r = (4.0f / float3(0.0f, 2.0f, 0.0f));
+  const float3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.msl
index 9414c5d..e251ea7 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(0.0f, 2.0f, 0.0f);
-  float3 const r = (4.0f / float3(0.0f, 2.0f, 0.0f));
+  float3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
index 2bf56ca..2fdf8fe 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(0, 2, 0);
-  ivec3 r = (4 / ivec3(0, 2, 0));
+  ivec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl
index 86a8464..35cc532 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(0, 2, 0);
-  const int3 r = (4 / int3(1, 2, 1));
+  const int3 r = (a / int3(1, 2, 1));
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl
index 9628eae..89df256 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(0, 2, 0);
-  int3 const r = (4 / int3(0, 2, 0));
+  int3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
index 5f10b26..6d14d8f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(0u, 2u, 0u);
-  uvec3 r = (4u / uvec3(0u, 2u, 0u));
+  uvec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl
index baa2f3a..f57e7ed 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(0u, 2u, 0u);
-  const uint3 r = (4u / uint3(1u, 2u, 1u));
+  const uint3 r = (a / uint3(1u, 2u, 1u));
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl
index f2eff5c..eb1c975 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(0u, 2u, 0u);
-  uint3 const r = (4u / uint3(0u, 2u, 0u));
+  uint3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl
index e2ab9bd..3596677 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) / 0.0f);
+  vec3 r = (a / 0.0f);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.hlsl
index b8e0d71..c661ab1 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) / 0.0f);
+  const float3 r = (a / 0.0f);
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.msl
index 4d754de..91df91e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 0.0f;
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) / 0.0f);
+  float3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
index 0521e66..6be0898 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) / 0);
+  ivec3 r = (a / 0);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl
index 9488958..8a44ac5 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) / 1);
+  const int3 r = (a / 1);
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl
index f0343d0..c187dd2 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 0;
-  int3 const r = (int3(1, 2, 3) / 0);
+  int3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
index 47b7ccf..ba0d9a3 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) / 0u);
+  uvec3 r = (a / 0u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl
index 4228171..18d1da5 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) / 1u);
+  const uint3 r = (a / 1u);
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl
index c41c66e..2d342e7 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 0u;
-  uint3 const r = (uint3(1u, 2u, 3u) / 0u);
+  uint3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
index aafb092..561918d 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(0.0f, 5.0f, 0.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) / vec3(0.0f, 5.0f, 0.0f));
+  vec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl
index fa216ca..94b990b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(0.0f, 5.0f, 0.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) / float3(0.0f, 5.0f, 0.0f));
+  const float3 r = (a / b);
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl
index d4fb358..a4765b3 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(0.0f, 5.0f, 0.0f);
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) / float3(0.0f, 5.0f, 0.0f));
+  float3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
index 559229c..6e11b34 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(0, 5, 0);
-  ivec3 r = (ivec3(1, 2, 3) / ivec3(0, 5, 0));
+  ivec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl
index 15fc566..3cd640e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(0, 5, 0);
-  const int3 r = (int3(1, 2, 3) / int3(1, 5, 1));
+  const int3 r = (a / int3(1, 5, 1));
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl
index f3fa90e..7cf2681 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(0, 5, 0);
-  int3 const r = (int3(1, 2, 3) / int3(0, 5, 0));
+  int3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
index e190fac..657cdb4 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(0u, 5u, 0u);
-  uvec3 r = (uvec3(1u, 2u, 3u) / uvec3(0u, 5u, 0u));
+  uvec3 r = (a / b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl
index 1966ceb..ea7ca06 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(0u, 5u, 0u);
-  const uint3 r = (uint3(1u, 2u, 3u) / uint3(1u, 5u, 1u));
+  const uint3 r = (a / uint3(1u, 5u, 1u));
   return;
 }
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl
index f65cf55..66ee158 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(0u, 5u, 0u);
-  uint3 const r = (uint3(1u, 2u, 3u) / uint3(0u, 5u, 0u));
+  uint3 const r = (a / b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.msl
index 760ab60..3c5ec17 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   uint const b = 2u;
-  int const r = as_type<int>((as_type<uint>(1) << 2u));
+  int const r = as_type<int>((as_type<uint>(a) << b));
   return;
 }
 
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.msl
index 4da8214..90ec5fb 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u << 2u);
+  uint const r = (a << b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl
index 72febf9..68dccd8 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   uvec3 b = uvec3(4u, 5u, 6u);
-  ivec3 r = (ivec3(1, 2, 3) << uvec3(4u, 5u, 6u));
+  ivec3 r = (a << b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.hlsl
index 219d22c..d43dfb6 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const uint3 b = uint3(4u, 5u, 6u);
-  const int3 r = (int3(1, 2, 3) << uint3(4u, 5u, 6u));
+  const int3 r = (a << b);
   return;
 }
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.msl b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.msl
index 6ed6ad0..f97db25 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   uint3 const b = uint3(4u, 5u, 6u);
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) << uint3(4u, 5u, 6u)));
+  int3 const r = as_type<int3>((as_type<uint3>(a) << b));
   return;
 }
 
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl
index d05ef8e..ba5db9c 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) << uvec3(4u, 5u, 6u));
+  uvec3 r = (a << b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.hlsl
index 171d03f..2de16f0 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) << uint3(4u, 5u, 6u));
+  const uint3 r = (a << b);
   return;
 }
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.msl b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.msl
index 58bf146..c80e57e 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) << uint3(4u, 5u, 6u));
+  uint3 const r = (a << b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.msl
index 1039669..a64e982 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
-  float const r = fmod(1.0f, 2.0f);
+  float const r = fmod(a, b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.msl
index 558076b..a67d6fe 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = (1 % 2);
+  int const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.msl
index 2d0ed2d..5d4b949 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u % 2u);
+  uint const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.glsl
index c3c02b4..bccb68c 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.glsl
@@ -8,7 +8,7 @@
 void f() {
   float a = 4.0f;
   vec3 b = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = tint_float_modulo(4.0f, vec3(1.0f, 2.0f, 3.0f));
+  vec3 r = tint_float_modulo(a, b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.hlsl
index 8a5c70c..b2653df 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float a = 4.0f;
   const float3 b = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (4.0f % float3(1.0f, 2.0f, 3.0f));
+  const float3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.msl
index af65ce9..bbcdd8e 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
-  float3 const r = fmod(4.0f, float3(1.0f, 2.0f, 3.0f));
+  float3 const r = fmod(a, b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.glsl
index 71f10c6..0167016 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(1, 2, 3);
-  ivec3 r = (4 % ivec3(1, 2, 3));
+  ivec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.hlsl
index 253b11d..5b0bfca 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(1, 2, 3);
-  const int3 r = (4 % int3(1, 2, 3));
+  const int3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.msl
index 7b419c6..533d477 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
-  int3 const r = (4 % int3(1, 2, 3));
+  int3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.glsl
index 65d6c0d..f150a92 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(1u, 2u, 3u);
-  uvec3 r = (4u % uvec3(1u, 2u, 3u));
+  uvec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.hlsl
index dd1bb39..97533fb 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(1u, 2u, 3u);
-  const uint3 r = (4u % uint3(1u, 2u, 3u));
+  const uint3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.msl
index 7bbe935..a5e85ce 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
-  uint3 const r = (4u % uint3(1u, 2u, 3u));
+  uint3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.glsl
index 311032d..8aef558 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = tint_float_modulo(vec3(1.0f, 2.0f, 3.0f), 4.0f);
+  vec3 r = tint_float_modulo(a, 4.0f);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.hlsl
index 448c5c7..3aca50d 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) % 4.0f);
+  const float3 r = (a % 4.0f);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.msl
index 0728300..ab3f908 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
-  float3 const r = fmod(float3(1.0f, 2.0f, 3.0f), 4.0f);
+  float3 const r = fmod(a, b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.glsl
index 7b086cb..4ffb72d 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) % 4);
+  ivec3 r = (a % 4);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.hlsl
index 7586f7c..1abee48 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) % 4);
+  const int3 r = (a % 4);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.msl
index 665f197..8df9cbe 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
-  int3 const r = (int3(1, 2, 3) % 4);
+  int3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.glsl
index b8be2c3..e4ac530 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) % 4u);
+  uvec3 r = (a % 4u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.hlsl
index 2cd57b5..c2d051d 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) % 4u);
+  const uint3 r = (a % 4u);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.msl
index 80f68bd..3adb345 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
-  uint3 const r = (uint3(1u, 2u, 3u) % 4u);
+  uint3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl
index 6adf250..99b1ce5 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl
@@ -8,7 +8,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(4.0f, 5.0f, 6.0f);
-  vec3 r = tint_float_modulo(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f));
+  vec3 r = tint_float_modulo(a, b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.hlsl
index 4de99bb..87e4dd4 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(4.0f, 5.0f, 6.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) % float3(4.0f, 5.0f, 6.0f));
+  const float3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.msl
index 734da95..bfb6b5f 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
-  float3 const r = fmod(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f));
+  float3 const r = fmod(a, b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl
index 6377363..56d7104 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) % ivec3(4, 5, 6));
+  ivec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.hlsl
index 0fbacab..f39516d 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) % int3(4, 5, 6));
+  const int3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.msl
index fcacba7..2bd4b5f 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = (int3(1, 2, 3) % int3(4, 5, 6));
+  int3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl
index c3320af..bd85a3e 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) % uvec3(4u, 5u, 6u));
+  uvec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.hlsl
index 28e4fe3..33e6b96 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) % uint3(4u, 5u, 6u));
+  const uint3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.msl
index 0797cc3..954924c 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) % uint3(4u, 5u, 6u));
+  uint3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl
index 8956a95..25c2f18 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 0.0f;
-  float const r = fmod(1.0f, 0.0f);
+  float const r = fmod(a, b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl
index 8beab32..98f1698 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 0;
-  int const r = (1 % 0);
+  int const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl
index fae1400..456e3b9 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 0u;
-  uint const r = (1u % 0u);
+  uint const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
index db2826c..e19dc46 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(0, 2, 0);
-  ivec3 r = (4 % ivec3(0, 2, 0));
+  ivec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl
index 7b5e017..fa4482f 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(0, 2, 0);
-  const int3 r = (4 % int3(1, 2, 1));
+  const int3 r = (a % int3(1, 2, 1));
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl
index 21e28ab..95a93f7 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(0, 2, 0);
-  int3 const r = (4 % int3(0, 2, 0));
+  int3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
index 0110858..633b9ed 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(0u, 2u, 0u);
-  uvec3 r = (4u % uvec3(0u, 2u, 0u));
+  uvec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl
index 8559cb6..12aa8c0 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(0u, 2u, 0u);
-  const uint3 r = (4u % uint3(1u, 2u, 1u));
+  const uint3 r = (a % uint3(1u, 2u, 1u));
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl
index 41099ba..16fa025 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(0u, 2u, 0u);
-  uint3 const r = (4u % uint3(0u, 2u, 0u));
+  uint3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
index d2e5cb9..c2e9b36 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) % 0);
+  ivec3 r = (a % 0);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl
index c09e5c7..6906266 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) % 1);
+  const int3 r = (a % 1);
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl
index 6ea6d36..cbac4c7 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 0;
-  int3 const r = (int3(1, 2, 3) % 0);
+  int3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
index 82d68ba..47e19a3 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) % 0u);
+  uvec3 r = (a % 0u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl
index 20a6164..4d8b0b4 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) % 1u);
+  const uint3 r = (a % 1u);
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl
index 0f226fa..78398ec 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 0u;
-  uint3 const r = (uint3(1u, 2u, 3u) % 0u);
+  uint3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
index 32febbd..3b69dee 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
@@ -8,7 +8,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(0.0f, 5.0f, 0.0f);
-  vec3 r = tint_float_modulo(vec3(1.0f, 2.0f, 3.0f), vec3(0.0f, 5.0f, 0.0f));
+  vec3 r = tint_float_modulo(a, b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl
index bf91c1c..5ea2fbd 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(0.0f, 5.0f, 0.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) % float3(0.0f, 5.0f, 0.0f));
+  const float3 r = (a % b);
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl
index b23d70e..9506b9c 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(0.0f, 5.0f, 0.0f);
-  float3 const r = fmod(float3(1.0f, 2.0f, 3.0f), float3(0.0f, 5.0f, 0.0f));
+  float3 const r = fmod(a, b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
index e86e1c0..809b454 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(0, 5, 0);
-  ivec3 r = (ivec3(1, 2, 3) % ivec3(0, 5, 0));
+  ivec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl
index 41f5836..ee60674 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(0, 5, 0);
-  const int3 r = (int3(1, 2, 3) % int3(1, 5, 1));
+  const int3 r = (a % int3(1, 5, 1));
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl
index 27fcbd8..7619c9c 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(0, 5, 0);
-  int3 const r = (int3(1, 2, 3) % int3(0, 5, 0));
+  int3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
index f621a75..af4c44f 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(0u, 5u, 0u);
-  uvec3 r = (uvec3(1u, 2u, 3u) % uvec3(0u, 5u, 0u));
+  uvec3 r = (a % b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl
index 4bd498c..2389839 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(0u, 5u, 0u);
-  const uint3 r = (uint3(1u, 2u, 3u) % uint3(1u, 5u, 1u));
+  const uint3 r = (a % uint3(1u, 5u, 1u));
   return;
 }
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl
index c86bd04..028424a 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(0u, 5u, 0u);
-  uint3 const r = (uint3(1u, 2u, 3u) % uint3(0u, 5u, 0u));
+  uint3 const r = (a % b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl
index 90c01d9..f5d9ebe 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   mat2x4 a = mat2x4(vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(5.0f, 6.0f, 7.0f, 8.0f));
   mat4x2 b = mat4x2(vec2(-1.0f, -2.0f), vec2(-3.0f, -4.0f), vec2(-5.0f, -6.0f), vec2(-7.0f, -8.0f));
-  mat4 r = (mat2x4(vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(5.0f, 6.0f, 7.0f, 8.0f)) * mat4x2(vec2(-1.0f, -2.0f), vec2(-3.0f, -4.0f), vec2(-5.0f, -6.0f), vec2(-7.0f, -8.0f)));
+  mat4 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.hlsl
index 5567e7b..c502b09 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float2x4 a = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
   const float4x2 b = float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f));
-  const float4x4 r = mul(float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f)), float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f)));
+  const float4x4 r = mul(b, a);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.msl
index 4dd7fbc..b706400 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float2x4 const a = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
   float4x2 const b = float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f));
-  float4x4 const r = (float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f)) * float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f)));
+  float4x4 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl
index 70ae213..4b6166c 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   mat3 a = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
   mat3 b = mat3(vec3(-1.0f, -2.0f, -3.0f), vec3(-4.0f, -5.0f, -6.0f), vec3(-7.0f, -8.0f, -9.0f));
-  mat3 r = (mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f)) * mat3(vec3(-1.0f, -2.0f, -3.0f), vec3(-4.0f, -5.0f, -6.0f), vec3(-7.0f, -8.0f, -9.0f)));
+  mat3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.hlsl
index 516713c..22af87e 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3x3 a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   const float3x3 b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
-  const float3x3 r = mul(float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f)), float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)));
+  const float3x3 r = mul(b, a);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.msl
index 951ba94..d51ecb1 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3x3 const a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3x3 const b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
-  float3x3 const r = (float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)) * float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f)));
+  float3x3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl
index d14744c..ff454c9 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   mat4x2 a = mat4x2(vec2(-1.0f, -2.0f), vec2(-3.0f, -4.0f), vec2(-5.0f, -6.0f), vec2(-7.0f, -8.0f));
   mat2x4 b = mat2x4(vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(5.0f, 6.0f, 7.0f, 8.0f));
-  mat2 r = (mat4x2(vec2(-1.0f, -2.0f), vec2(-3.0f, -4.0f), vec2(-5.0f, -6.0f), vec2(-7.0f, -8.0f)) * mat2x4(vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(5.0f, 6.0f, 7.0f, 8.0f)));
+  mat2 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.hlsl
index b946eae..9f4028a 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float4x2 a = float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f));
   const float2x4 b = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
-  const float2x2 r = mul(float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f)), float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f)));
+  const float2x2 r = mul(b, a);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.msl
index df9f1ce..7b95ad6 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float4x2 const a = float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f));
   float2x4 const b = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
-  float2x2 const r = (float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f)) * float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f)));
+  float2x2 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.msl
index d0f0021..daaade6 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
-  float const r = (1.0f * 2.0f);
+  float const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.msl
index eaa1bf2..7a20eac 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = as_type<int>((as_type<uint>(1) * as_type<uint>(2)));
+  int const r = as_type<int>((as_type<uint>(a) * as_type<uint>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.msl
index 765a95b..7e9738a 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u * 2u);
+  uint const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl
index fdf60b7..e24420f 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   float a = 4.0f;
   vec3 b = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (4.0f * vec3(1.0f, 2.0f, 3.0f));
+  vec3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.hlsl
index e674383..ab39cdc 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float a = 4.0f;
   const float3 b = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (4.0f * float3(1.0f, 2.0f, 3.0f));
+  const float3 r = (a * b);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.msl
index 53077f3..5ea4340 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
-  float3 const r = (4.0f * float3(1.0f, 2.0f, 3.0f));
+  float3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl
index 1af8a7f..f431bdd 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(1, 2, 3);
-  ivec3 r = (4 * ivec3(1, 2, 3));
+  ivec3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.hlsl
index c4bbfb6..6d7c62a 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(1, 2, 3);
-  const int3 r = (4 * int3(1, 2, 3));
+  const int3 r = (a * b);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.msl
index 3493e39..216de39 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
-  int3 const r = as_type<int3>((as_type<uint>(4) * as_type<uint3>(int3(1, 2, 3))));
+  int3 const r = as_type<int3>((as_type<uint>(a) * as_type<uint3>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl
index 757c58b..3fffc73 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(1u, 2u, 3u);
-  uvec3 r = (4u * uvec3(1u, 2u, 3u));
+  uvec3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.hlsl
index dc4c0f9..73ec042 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(1u, 2u, 3u);
-  const uint3 r = (4u * uint3(1u, 2u, 3u));
+  const uint3 r = (a * b);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.msl
index c11481f..6ff7ae2 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
-  uint3 const r = (4u * uint3(1u, 2u, 3u));
+  uint3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl
index 769f795..1e5e9c4 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) * 4.0f);
+  vec3 r = (a * 4.0f);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.hlsl
index 51a1def..646399d 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) * 4.0f);
+  const float3 r = (a * 4.0f);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.msl
index 482b041..2779faf 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) * 4.0f);
+  float3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl
index 883c384..daadb77 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) * 4);
+  ivec3 r = (a * 4);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.hlsl
index f60f218..e86c189 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) * 4);
+  const int3 r = (a * 4);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.msl
index 06ce9ec..f320bd7 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) * as_type<uint>(4)));
+  int3 const r = as_type<int3>((as_type<uint3>(a) * as_type<uint>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl
index 1d0f146..847015b 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) * 4u);
+  uvec3 r = (a * 4u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.hlsl
index cbf36e1..d61b59a 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) * 4u);
+  const uint3 r = (a * 4u);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.msl
index 02b5bed..b0b38b0 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
-  uint3 const r = (uint3(1u, 2u, 3u) * 4u);
+  uint3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl
index 2c30e82..1fe03cd 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(4.0f, 5.0f, 6.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) * vec3(4.0f, 5.0f, 6.0f));
+  vec3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.hlsl
index ce935ce..8a51b14 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(4.0f, 5.0f, 6.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) * float3(4.0f, 5.0f, 6.0f));
+  const float3 r = (a * b);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.msl
index 6c471be..2c70f56 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) * float3(4.0f, 5.0f, 6.0f));
+  float3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl
index d5f10dd..6974064 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) * ivec3(4, 5, 6));
+  ivec3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.hlsl
index 4cc61de..d532aaf 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) * int3(4, 5, 6));
+  const int3 r = (a * b);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.msl
index 21e97d9..f4511b2 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) * as_type<uint3>(int3(4, 5, 6))));
+  int3 const r = as_type<int3>((as_type<uint3>(a) * as_type<uint3>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl
index 716e64e..7cd4b4d 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) * uvec3(4u, 5u, 6u));
+  uvec3 r = (a * b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.hlsl
index 6eef3e8..5db3034 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) * uint3(4u, 5u, 6u));
+  const uint3 r = (a * b);
   return;
 }
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.msl
index 15d1a52..3bdad2d 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) * uint3(4u, 5u, 6u));
+  uint3 const r = (a * b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.msl
index a1760a1..9d9f749 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   uint const b = 2u;
-  int const r = (1 >> 2u);
+  int const r = (a >> b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.msl
index eebabe3..68036b5 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u >> 2u);
+  uint const r = (a >> b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl
index ec9e521..ca2842c 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   uvec3 b = uvec3(4u, 5u, 6u);
-  ivec3 r = (ivec3(1, 2, 3) >> uvec3(4u, 5u, 6u));
+  ivec3 r = (a >> b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.hlsl
index b7d413b..2520c5e 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const uint3 b = uint3(4u, 5u, 6u);
-  const int3 r = (int3(1, 2, 3) >> uint3(4u, 5u, 6u));
+  const int3 r = (a >> b);
   return;
 }
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.msl b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.msl
index 214c5d1..5c3fd63 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   uint3 const b = uint3(4u, 5u, 6u);
-  int3 const r = (int3(1, 2, 3) >> uint3(4u, 5u, 6u));
+  int3 const r = (a >> b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl
index c121079..a292377 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) >> uvec3(4u, 5u, 6u));
+  uvec3 r = (a >> b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.hlsl
index 2094d5e..1c57ee7 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) >> uint3(4u, 5u, 6u));
+  const uint3 r = (a >> b);
   return;
 }
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.msl b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.msl
index bd22b17..b5aa9e9 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) >> uint3(4u, 5u, 6u));
+  uint3 const r = (a >> b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl
index b446473..aadd9ec 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   mat3 a = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
   mat3 b = mat3(vec3(-1.0f, -2.0f, -3.0f), vec3(-4.0f, -5.0f, -6.0f), vec3(-7.0f, -8.0f, -9.0f));
-  mat3 r = (mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f)) - mat3(vec3(-1.0f, -2.0f, -3.0f), vec3(-4.0f, -5.0f, -6.0f), vec3(-7.0f, -8.0f, -9.0f)));
+  mat3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.hlsl
index 84c6462..9d1b2b3 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3x3 a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   const float3x3 b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
-  const float3x3 r = (float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)) - float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f)));
+  const float3x3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.msl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.msl
index 96937e7..bcf7b16 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3x3 const a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3x3 const b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
-  float3x3 const r = (float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)) - float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f)));
+  float3x3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.msl
index c3df54d..ae19d6c 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
-  float const r = (1.0f - 2.0f);
+  float const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.msl
index f36ba7e..4c25a09 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 1;
   int const b = 2;
-  int const r = as_type<int>((as_type<uint>(1) - as_type<uint>(2)));
+  int const r = as_type<int>((as_type<uint>(a) - as_type<uint>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.msl
index 1855bab..d93a0c7 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
-  uint const r = (1u - 2u);
+  uint const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl
index aff4b7a..f50f51a 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   float a = 4.0f;
   vec3 b = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (4.0f - vec3(1.0f, 2.0f, 3.0f));
+  vec3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.hlsl
index 844a3d7..d714c62 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float a = 4.0f;
   const float3 b = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (4.0f - float3(1.0f, 2.0f, 3.0f));
+  const float3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.msl
index bd32879..ce03e02 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
-  float3 const r = (4.0f - float3(1.0f, 2.0f, 3.0f));
+  float3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl
index 326d6bf..85753f2 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   int a = 4;
   ivec3 b = ivec3(1, 2, 3);
-  ivec3 r = (4 - ivec3(1, 2, 3));
+  ivec3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.hlsl
index 5b02212..1e67f13 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int a = 4;
   const int3 b = int3(1, 2, 3);
-  const int3 r = (4 - int3(1, 2, 3));
+  const int3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.msl
index 4d922a9..8837be0 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
-  int3 const r = as_type<int3>((as_type<uint>(4) - as_type<uint3>(int3(1, 2, 3))));
+  int3 const r = as_type<int3>((as_type<uint>(a) - as_type<uint3>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl
index b4b985d..73cf7c3 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uint a = 4u;
   uvec3 b = uvec3(1u, 2u, 3u);
-  uvec3 r = (4u - uvec3(1u, 2u, 3u));
+  uvec3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.hlsl
index 80336af..90f540d 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint a = 4u;
   const uint3 b = uint3(1u, 2u, 3u);
-  const uint3 r = (4u - uint3(1u, 2u, 3u));
+  const uint3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.msl
index ae3bf8f..ec8b6cf 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
-  uint3 const r = (4u - uint3(1u, 2u, 3u));
+  uint3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl
index f9a59ee..0eee275 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) - 4.0f);
+  vec3 r = (a - 4.0f);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.hlsl
index 480f353..0476c62 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) - 4.0f);
+  const float3 r = (a - 4.0f);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.msl b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.msl
index 1862e3e..7799789 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) - 4.0f);
+  float3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl
index 29b0229..bdb3b3d 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 r = (ivec3(1, 2, 3) - 4);
+  ivec3 r = (a - 4);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.hlsl
index 4e9b06d..8db37c9 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 r = (int3(1, 2, 3) - 4);
+  const int3 r = (a - 4);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.msl b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.msl
index c8889bb..6149a0c 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) - as_type<uint>(4)));
+  int3 const r = as_type<int3>((as_type<uint3>(a) - as_type<uint>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl
index 8a96f39..75a50ae 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 r = (uvec3(1u, 2u, 3u) - 4u);
+  uvec3 r = (a - 4u);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.hlsl
index 625f07a..6a9b7ee 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 r = (uint3(1u, 2u, 3u) - 4u);
+  const uint3 r = (a - 4u);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.msl b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.msl
index dce5245..7f76d5a 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
-  uint3 const r = (uint3(1u, 2u, 3u) - 4u);
+  uint3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl
index 71950a6..d180ab6 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
   vec3 b = vec3(4.0f, 5.0f, 6.0f);
-  vec3 r = (vec3(1.0f, 2.0f, 3.0f) - vec3(4.0f, 5.0f, 6.0f));
+  vec3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.hlsl
index 9e9137b..f4a568e 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
   const float3 b = float3(4.0f, 5.0f, 6.0f);
-  const float3 r = (float3(1.0f, 2.0f, 3.0f) - float3(4.0f, 5.0f, 6.0f));
+  const float3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.msl b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.msl
index eff4983..5ce4e15 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
-  float3 const r = (float3(1.0f, 2.0f, 3.0f) - float3(4.0f, 5.0f, 6.0f));
+  float3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl
index d5b1117..dca3b15 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   ivec3 a = ivec3(1, 2, 3);
   ivec3 b = ivec3(4, 5, 6);
-  ivec3 r = (ivec3(1, 2, 3) - ivec3(4, 5, 6));
+  ivec3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.hlsl
index 616cef2..e8a2622 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const int3 a = int3(1, 2, 3);
   const int3 b = int3(4, 5, 6);
-  const int3 r = (int3(1, 2, 3) - int3(4, 5, 6));
+  const int3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.msl b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.msl
index 9718f58..142bb72 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
-  int3 const r = as_type<int3>((as_type<uint3>(int3(1, 2, 3)) - as_type<uint3>(int3(4, 5, 6))));
+  int3 const r = as_type<int3>((as_type<uint3>(a) - as_type<uint3>(b)));
   return;
 }
 
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl
index ba6ac6a..367b257 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
   uvec3 b = uvec3(4u, 5u, 6u);
-  uvec3 r = (uvec3(1u, 2u, 3u) - uvec3(4u, 5u, 6u));
+  uvec3 r = (a - b);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.hlsl b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.hlsl
index c1c4872..1a8d03f 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.hlsl
@@ -2,6 +2,6 @@
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
   const uint3 b = uint3(4u, 5u, 6u);
-  const uint3 r = (uint3(1u, 2u, 3u) - uint3(4u, 5u, 6u));
+  const uint3 r = (a - b);
   return;
 }
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.msl b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.msl
index bf347ce..0f6cc4b 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.msl
@@ -4,7 +4,7 @@
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
-  uint3 const r = (uint3(1u, 2u, 3u) - uint3(4u, 5u, 6u));
+  uint3 const r = (a - b);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.msl
index 0acca82..ea55957 100644
--- a/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/f32-f32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   float const a = 1.0f;
-  float const b = as_type<float>(1.0f);
+  float const b = as_type<float>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.msl
index d66d495..a2bdd13 100644
--- a/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/f32-i32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   float const a = 1.0f;
-  int const b = as_type<int>(1.0f);
+  int const b = as_type<int>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.msl
index 3b94610..f0e4685 100644
--- a/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/f32-u32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   float const a = 1.0f;
-  uint const b = as_type<uint>(1.0f);
+  uint const b = as_type<uint>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.msl
index 9cd878c..4368427 100644
--- a/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/i32-f32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   int const a = 1;
-  float const b = as_type<float>(1);
+  float const b = as_type<float>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.msl
index 6e13d47..782176a 100644
--- a/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/i32-i32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   int const a = 1;
-  int const b = as_type<int>(1);
+  int const b = as_type<int>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.msl
index d148cfd..dd82cdd 100644
--- a/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/i32-u32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   int const a = 1;
-  uint const b = as_type<uint>(1);
+  uint const b = as_type<uint>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.msl
index ae848a8..f019daf 100644
--- a/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/u32-f32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   uint const a = 1u;
-  float const b = as_type<float>(1u);
+  float const b = as_type<float>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.msl
index 430de90..c6bd3b9 100644
--- a/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/u32-i32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   uint const a = 1u;
-  int const b = as_type<int>(1u);
+  int const b = as_type<int>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.msl b/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.msl
index d4ed955..01f3462 100644
--- a/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/scalar/u32-u32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   uint const a = 1u;
-  uint const b = as_type<uint>(1u);
+  uint const b = as_type<uint>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl
index 0fc03fe..ed3989d 100644
--- a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  vec3 b = vec3(1.0f, 2.0f, 3.0f);
+  vec3 b = a;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.hlsl
index f307f42..e6ce403 100644
--- a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const float3 b = asfloat(float3(1.0f, 2.0f, 3.0f));
+  const float3 b = asfloat(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.msl
index cc8ecac..66dbb55 100644
--- a/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/f32-f32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
-  float3 const b = as_type<float3>(float3(1.0f, 2.0f, 3.0f));
+  float3 const b = as_type<float3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl
index 68fcc82..551b039 100644
--- a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  ivec3 b = floatBitsToInt(vec3(1.0f, 2.0f, 3.0f));
+  ivec3 b = floatBitsToInt(a);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.hlsl
index 8e63600..3ebeb51 100644
--- a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const int3 b = asint(float3(1.0f, 2.0f, 3.0f));
+  const int3 b = asint(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.msl
index 5bbb2b4..2d64209 100644
--- a/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/f32-i32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
-  int3 const b = as_type<int3>(float3(1.0f, 2.0f, 3.0f));
+  int3 const b = as_type<int3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl
index 4de2290..b1fe444 100644
--- a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
-  uvec3 b = floatBitsToUint(vec3(1.0f, 2.0f, 3.0f));
+  uvec3 b = floatBitsToUint(a);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.hlsl
index f033401..9490820 100644
--- a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const float3 a = float3(1.0f, 2.0f, 3.0f);
-  const uint3 b = asuint(float3(1.0f, 2.0f, 3.0f));
+  const uint3 b = asuint(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.msl
index b6441d4..b8a22f2 100644
--- a/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/f32-u32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
-  uint3 const b = as_type<uint3>(float3(1.0f, 2.0f, 3.0f));
+  uint3 const b = as_type<uint3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl
index 3f7d5ad..a4f8c04 100644
--- a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  vec3 b = intBitsToFloat(ivec3(1, 2, 3));
+  vec3 b = intBitsToFloat(a);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.hlsl
index be442ac..73bb118 100644
--- a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const float3 b = asfloat(int3(1, 2, 3));
+  const float3 b = asfloat(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.msl
index 0a13cd7..14d44ea 100644
--- a/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/i32-f32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   int3 const a = int3(1, 2, 3);
-  float3 const b = as_type<float3>(int3(1, 2, 3));
+  float3 const b = as_type<float3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl
index dd933bd..6214de8 100644
--- a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  ivec3 b = ivec3(1, 2, 3);
+  ivec3 b = a;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.hlsl
index 95185b2..2304f93 100644
--- a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const int3 b = asint(int3(1, 2, 3));
+  const int3 b = asint(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.msl
index 228aee5..3c58a22 100644
--- a/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/i32-i32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   int3 const a = int3(1, 2, 3);
-  int3 const b = as_type<int3>(int3(1, 2, 3));
+  int3 const b = as_type<int3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl
index 2de00f1..eac0936 100644
--- a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
-  uvec3 b = uvec3(ivec3(1, 2, 3));
+  uvec3 b = uvec3(a);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.hlsl
index 80f8f3f..80e6646 100644
--- a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const int3 a = int3(1, 2, 3);
-  const uint3 b = asuint(int3(1, 2, 3));
+  const uint3 b = asuint(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.msl
index efebc6b..34f7964 100644
--- a/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/i32-u32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   int3 const a = int3(1, 2, 3);
-  uint3 const b = as_type<uint3>(int3(1, 2, 3));
+  uint3 const b = as_type<uint3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl
index 16a4892..63a77f9 100644
--- a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  vec3 b = uintBitsToFloat(uvec3(1u, 2u, 3u));
+  vec3 b = uintBitsToFloat(a);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.hlsl
index c6adc26..72084e9 100644
--- a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const float3 b = asfloat(uint3(1u, 2u, 3u));
+  const float3 b = asfloat(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.msl
index 65e969b..2376290 100644
--- a/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/u32-f32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
-  float3 const b = as_type<float3>(uint3(1u, 2u, 3u));
+  float3 const b = as_type<float3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl
index 4160557..bb0ab18 100644
--- a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  ivec3 b = ivec3(uvec3(1u, 2u, 3u));
+  ivec3 b = ivec3(a);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.hlsl
index c14ca04..6622323 100644
--- a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const int3 b = asint(uint3(1u, 2u, 3u));
+  const int3 b = asint(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.msl
index e8b5e5e..51c8f92 100644
--- a/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/u32-i32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
-  int3 const b = as_type<int3>(uint3(1u, 2u, 3u));
+  int3 const b = as_type<int3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl
index 0f24f77..ee92fe8 100644
--- a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl
+++ b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
-  uvec3 b = uvec3(1u, 2u, 3u);
+  uvec3 b = a;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.hlsl b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.hlsl
index 55f17f0..71f2935 100644
--- a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void f() {
   const uint3 a = uint3(1u, 2u, 3u);
-  const uint3 b = asuint(uint3(1u, 2u, 3u));
+  const uint3 b = asuint(a);
   return;
 }
diff --git a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.msl b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.msl
index 5e9386c..43d1c6b 100644
--- a/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.msl
+++ b/test/tint/expressions/bitcast/vector/u32-u32.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
-  uint3 const b = as_type<uint3>(uint3(1u, 2u, 3u));
+  uint3 const b = as_type<uint3>(a);
   return;
 }
 
diff --git a/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.glsl b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.glsl
index b934580..358024a 100644
--- a/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.glsl
+++ b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.glsl
@@ -6,6 +6,6 @@
 }
 vec3 f(int x) {
   mat3 m = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
-  return mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f))[x];
+  return m[x];
 }
 
diff --git a/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.hlsl b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.hlsl
index 4670b64..332312c 100644
--- a/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.hlsl
+++ b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.hlsl
@@ -5,5 +5,5 @@
 
 float3 f(int x) {
   const float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
-  return float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f))[x];
+  return m[x];
 }
diff --git a/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.msl b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.msl
index 200e973..647d17a 100644
--- a/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/let/param/matrix.wgsl.expected.msl
@@ -4,6 +4,6 @@
 float3 f(int x) {
   float3x3 const m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   int const i = x;
-  return float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f))[i];
+  return m[i];
 }
 
diff --git a/test/tint/expressions/index/let/let/param/vector.wgsl.expected.glsl b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.glsl
index fa812b3..53eb8d8 100644
--- a/test/tint/expressions/index/let/let/param/vector.wgsl.expected.glsl
+++ b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.glsl
@@ -6,6 +6,6 @@
 }
 float f(int x) {
   vec3 v = vec3(1.0f, 2.0f, 3.0f);
-  return vec3(1.0f, 2.0f, 3.0f)[x];
+  return v[x];
 }
 
diff --git a/test/tint/expressions/index/let/let/param/vector.wgsl.expected.hlsl b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.hlsl
index 6f93047..5629258 100644
--- a/test/tint/expressions/index/let/let/param/vector.wgsl.expected.hlsl
+++ b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.hlsl
@@ -5,5 +5,5 @@
 
 float f(int x) {
   const float3 v = float3(1.0f, 2.0f, 3.0f);
-  return float3(1.0f, 2.0f, 3.0f)[x];
+  return v[x];
 }
diff --git a/test/tint/expressions/index/let/let/param/vector.wgsl.expected.msl b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.msl
index 6f13685..b0d8ca9 100644
--- a/test/tint/expressions/index/let/let/param/vector.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/let/param/vector.wgsl.expected.msl
@@ -4,6 +4,6 @@
 float f(int x) {
   float3 const v = float3(1.0f, 2.0f, 3.0f);
   int const i = x;
-  return float3(1.0f, 2.0f, 3.0f)[i];
+  return v[i];
 }
 
diff --git a/test/tint/expressions/index/let/param/matrix.wgsl.expected.glsl b/test/tint/expressions/index/let/param/matrix.wgsl.expected.glsl
index dfcf3f1..32c62fc 100644
--- a/test/tint/expressions/index/let/param/matrix.wgsl.expected.glsl
+++ b/test/tint/expressions/index/let/param/matrix.wgsl.expected.glsl
@@ -6,6 +6,6 @@
 }
 vec3 f(int i) {
   mat3 m = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
-  return mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f))[i];
+  return m[i];
 }
 
diff --git a/test/tint/expressions/index/let/param/matrix.wgsl.expected.hlsl b/test/tint/expressions/index/let/param/matrix.wgsl.expected.hlsl
index 6bdb084..3714c1c 100644
--- a/test/tint/expressions/index/let/param/matrix.wgsl.expected.hlsl
+++ b/test/tint/expressions/index/let/param/matrix.wgsl.expected.hlsl
@@ -5,5 +5,5 @@
 
 float3 f(int i) {
   const float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
-  return float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f))[i];
+  return m[i];
 }
diff --git a/test/tint/expressions/index/let/param/matrix.wgsl.expected.msl b/test/tint/expressions/index/let/param/matrix.wgsl.expected.msl
index 722365f..49218fd 100644
--- a/test/tint/expressions/index/let/param/matrix.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/param/matrix.wgsl.expected.msl
@@ -3,6 +3,6 @@
 using namespace metal;
 float3 f(int i) {
   float3x3 const m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
-  return float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f))[i];
+  return m[i];
 }
 
diff --git a/test/tint/expressions/index/let/param/vector.wgsl.expected.glsl b/test/tint/expressions/index/let/param/vector.wgsl.expected.glsl
index fa701f5..b28ea6d 100644
--- a/test/tint/expressions/index/let/param/vector.wgsl.expected.glsl
+++ b/test/tint/expressions/index/let/param/vector.wgsl.expected.glsl
@@ -6,6 +6,6 @@
 }
 float f(int i) {
   vec3 v = vec3(1.0f, 2.0f, 3.0f);
-  return vec3(1.0f, 2.0f, 3.0f)[i];
+  return v[i];
 }
 
diff --git a/test/tint/expressions/index/let/param/vector.wgsl.expected.hlsl b/test/tint/expressions/index/let/param/vector.wgsl.expected.hlsl
index e71665c..16cccbf 100644
--- a/test/tint/expressions/index/let/param/vector.wgsl.expected.hlsl
+++ b/test/tint/expressions/index/let/param/vector.wgsl.expected.hlsl
@@ -5,5 +5,5 @@
 
 float f(int i) {
   const float3 v = float3(1.0f, 2.0f, 3.0f);
-  return float3(1.0f, 2.0f, 3.0f)[i];
+  return v[i];
 }
diff --git a/test/tint/expressions/index/let/param/vector.wgsl.expected.msl b/test/tint/expressions/index/let/param/vector.wgsl.expected.msl
index 22d0e0b..4d45110 100644
--- a/test/tint/expressions/index/let/param/vector.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/param/vector.wgsl.expected.msl
@@ -3,6 +3,6 @@
 using namespace metal;
 float f(int i) {
   float3 const v = float3(1.0f, 2.0f, 3.0f);
-  return float3(1.0f, 2.0f, 3.0f)[i];
+  return v[i];
 }
 
diff --git a/test/tint/expressions/index/let/var/literal/array.wgsl.expected.msl b/test/tint/expressions/index/let/var/literal/array.wgsl.expected.msl
index 74fc40d..a435dac 100644
--- a/test/tint/expressions/index/let/var/literal/array.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/var/literal/array.wgsl.expected.msl
@@ -17,6 +17,6 @@
 int f() {
   tint_array<int, 8> a = tint_array<int, 8>{1, 2, 3, 4, 5, 6, 7, 8};
   int const i = 1;
-  return a[1];
+  return a[i];
 }
 
diff --git a/test/tint/expressions/index/let/var/literal/matrix.wgsl.expected.msl b/test/tint/expressions/index/let/var/literal/matrix.wgsl.expected.msl
index 7d63bb4..0536bc1 100644
--- a/test/tint/expressions/index/let/var/literal/matrix.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/var/literal/matrix.wgsl.expected.msl
@@ -4,6 +4,6 @@
 float3 f() {
   float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   int const i = 1;
-  return m[1];
+  return m[i];
 }
 
diff --git a/test/tint/expressions/index/let/var/literal/vector.wgsl.expected.msl b/test/tint/expressions/index/let/var/literal/vector.wgsl.expected.msl
index 900e666..07ca4fb 100644
--- a/test/tint/expressions/index/let/var/literal/vector.wgsl.expected.msl
+++ b/test/tint/expressions/index/let/var/literal/vector.wgsl.expected.msl
@@ -4,6 +4,6 @@
 float f() {
   float3 v = float3(1.0f, 2.0f, 3.0f);
   int const i = 1;
-  return v[1];
+  return v[i];
 }
 
diff --git a/test/tint/expressions/index/var/let/literal/array.wgsl.expected.msl b/test/tint/expressions/index/var/let/literal/array.wgsl.expected.msl
index 74fc40d..a435dac 100644
--- a/test/tint/expressions/index/var/let/literal/array.wgsl.expected.msl
+++ b/test/tint/expressions/index/var/let/literal/array.wgsl.expected.msl
@@ -17,6 +17,6 @@
 int f() {
   tint_array<int, 8> a = tint_array<int, 8>{1, 2, 3, 4, 5, 6, 7, 8};
   int const i = 1;
-  return a[1];
+  return a[i];
 }
 
diff --git a/test/tint/expressions/index/var/let/literal/matrix.wgsl.expected.msl b/test/tint/expressions/index/var/let/literal/matrix.wgsl.expected.msl
index 7d63bb4..0536bc1 100644
--- a/test/tint/expressions/index/var/let/literal/matrix.wgsl.expected.msl
+++ b/test/tint/expressions/index/var/let/literal/matrix.wgsl.expected.msl
@@ -4,6 +4,6 @@
 float3 f() {
   float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   int const i = 1;
-  return m[1];
+  return m[i];
 }
 
diff --git a/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.msl b/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.msl
index 900e666..07ca4fb 100644
--- a/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.msl
+++ b/test/tint/expressions/index/var/let/literal/vector.wgsl.expected.msl
@@ -4,6 +4,6 @@
 float f() {
   float3 v = float3(1.0f, 2.0f, 3.0f);
   int const i = 1;
-  return v[1];
+  return v[i];
 }
 
diff --git a/test/tint/identifiers/underscore/double/let.wgsl.expected.glsl b/test/tint/identifiers/underscore/double/let.wgsl.expected.glsl
index d1a4c44..a0bbe15 100644
--- a/test/tint/identifiers/underscore/double/let.wgsl.expected.glsl
+++ b/test/tint/identifiers/underscore/double/let.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 const int a = 1;
 const int a__ = 2;
 void f() {
-  int b = 1;
-  int b__ = 2;
+  int b = a;
+  int b__ = a__;
 }
 
diff --git a/test/tint/identifiers/underscore/double/let.wgsl.expected.hlsl b/test/tint/identifiers/underscore/double/let.wgsl.expected.hlsl
index 7d4de05..8f66e9d 100644
--- a/test/tint/identifiers/underscore/double/let.wgsl.expected.hlsl
+++ b/test/tint/identifiers/underscore/double/let.wgsl.expected.hlsl
@@ -7,6 +7,6 @@
 static const int a__ = 2;
 
 void f() {
-  const int b = 1;
-  const int b__ = 2;
+  const int b = a;
+  const int b__ = a__;
 }
diff --git a/test/tint/identifiers/underscore/double/let.wgsl.expected.msl b/test/tint/identifiers/underscore/double/let.wgsl.expected.msl
index 0d7413f..47c1b05 100644
--- a/test/tint/identifiers/underscore/double/let.wgsl.expected.msl
+++ b/test/tint/identifiers/underscore/double/let.wgsl.expected.msl
@@ -6,7 +6,7 @@
 constant int a__ = 2;
 
 void f() {
-  int const b = 1;
-  int const b__ = 2;
+  int const b = a;
+  int const b__ = a__;
 }
 
diff --git a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl
index fbdda73..c5a6a9f 100644
--- a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl
+++ b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 const int a = 1;
 const int _a = 2;
 void f() {
-  int b = 1;
-  int _b = 2;
+  int b = a;
+  int _b = _a;
 }
 
diff --git a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.hlsl b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.hlsl
index fe642f0..4e65f71 100644
--- a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.hlsl
+++ b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.hlsl
@@ -7,6 +7,6 @@
 static const int _a = 2;
 
 void f() {
-  const int b = 1;
-  const int _b = 2;
+  const int b = a;
+  const int _b = _a;
 }
diff --git a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.msl b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.msl
index 78eb668..7b3d669 100644
--- a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.msl
@@ -6,7 +6,7 @@
 constant int _a = 2;
 
 void f() {
-  int const b = 1;
-  int const _b = 2;
+  int const b = a;
+  int const _b = _a;
 }
 
diff --git a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl
index 32424a1..ae9a9c8 100644
--- a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl
+++ b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 const int A = 1;
 const int _A = 2;
 void f() {
-  int B = 1;
-  int _B = 2;
+  int B = A;
+  int _B = _A;
 }
 
diff --git a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.hlsl b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.hlsl
index c3f9d6f..fa81c83 100644
--- a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.hlsl
+++ b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.hlsl
@@ -7,6 +7,6 @@
 static const int _A = 2;
 
 void f() {
-  const int B = 1;
-  const int _B = 2;
+  const int B = A;
+  const int _B = _A;
 }
diff --git a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.msl b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.msl
index a3e94db..5afe76f 100644
--- a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.msl
@@ -6,7 +6,7 @@
 constant int _A = 2;
 
 void f() {
-  int const B = 1;
-  int const _B = 2;
+  int const B = A;
+  int const _B = _A;
 }
 
diff --git a/test/tint/out_of_order_decls/func/let.wgsl.expected.glsl b/test/tint/out_of_order_decls/func/let.wgsl.expected.glsl
index b8397a7..f308959 100644
--- a/test/tint/out_of_order_decls/func/let.wgsl.expected.glsl
+++ b/test/tint/out_of_order_decls/func/let.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 
 const int a = 1;
 void f() {
-  int b = 1;
+  int b = a;
 }
 
 void main() {
diff --git a/test/tint/out_of_order_decls/func/let.wgsl.expected.hlsl b/test/tint/out_of_order_decls/func/let.wgsl.expected.hlsl
index 93c537a..c35c250 100644
--- a/test/tint/out_of_order_decls/func/let.wgsl.expected.hlsl
+++ b/test/tint/out_of_order_decls/func/let.wgsl.expected.hlsl
@@ -1,6 +1,6 @@
 static const int a = 1;
 
 void f() {
-  const int b = 1;
+  const int b = a;
   return;
 }
diff --git a/test/tint/out_of_order_decls/func/let.wgsl.expected.msl b/test/tint/out_of_order_decls/func/let.wgsl.expected.msl
index 5e4032c..2509d6c 100644
--- a/test/tint/out_of_order_decls/func/let.wgsl.expected.msl
+++ b/test/tint/out_of_order_decls/func/let.wgsl.expected.msl
@@ -4,7 +4,7 @@
 constant int a = 1;
 
 fragment void f() {
-  int const b = 1;
+  int const b = a;
   return;
 }
 
diff --git a/test/tint/shadowing/alias/let.wgsl.expected.glsl b/test/tint/shadowing/alias/let.wgsl.expected.glsl
index 30dbb3b..d037e83 100644
--- a/test/tint/shadowing/alias/let.wgsl.expected.glsl
+++ b/test/tint/shadowing/alias/let.wgsl.expected.glsl
@@ -7,9 +7,9 @@
 void f() {
   {
     int a_1 = 0;
-    int b = 0;
+    int b = a_1;
   }
   int a_2 = 0;
-  int b = 0;
+  int b = a_2;
 }
 
diff --git a/test/tint/shadowing/alias/let.wgsl.expected.hlsl b/test/tint/shadowing/alias/let.wgsl.expected.hlsl
index 2d93ee0..ad5e104 100644
--- a/test/tint/shadowing/alias/let.wgsl.expected.hlsl
+++ b/test/tint/shadowing/alias/let.wgsl.expected.hlsl
@@ -6,8 +6,8 @@
 void f() {
   {
     const int a_1 = 0;
-    const int b = 0;
+    const int b = a_1;
   }
   const int a_2 = 0;
-  const int b = 0;
+  const int b = a_2;
 }
diff --git a/test/tint/shadowing/alias/let.wgsl.expected.msl b/test/tint/shadowing/alias/let.wgsl.expected.msl
index 4241865..0b83842 100644
--- a/test/tint/shadowing/alias/let.wgsl.expected.msl
+++ b/test/tint/shadowing/alias/let.wgsl.expected.msl
@@ -4,9 +4,9 @@
 void f() {
   {
     int const a_1 = 0;
-    int const b = 0;
+    int const b = a_1;
   }
   int const a_2 = 0;
-  int const b = 0;
+  int const b = a_2;
 }
 
diff --git a/test/tint/shadowing/function/let.wgsl.expected.msl b/test/tint/shadowing/function/let.wgsl.expected.msl
index 6f2d8d3..16f3280 100644
--- a/test/tint/shadowing/function/let.wgsl.expected.msl
+++ b/test/tint/shadowing/function/let.wgsl.expected.msl
@@ -7,6 +7,6 @@
     int b = a_1;
   }
   int const a_2 = 1;
-  int const b = 1;
+  int const b = a_2;
 }
 
diff --git a/test/tint/statements/decrement/vector_component.wgsl.expected.glsl b/test/tint/statements/decrement/vector_component.wgsl.expected.glsl
index a6ba2b0..908643e 100644
--- a/test/tint/statements/decrement/vector_component.wgsl.expected.glsl
+++ b/test/tint/statements/decrement/vector_component.wgsl.expected.glsl
@@ -13,7 +13,7 @@
 } a;
 void tint_symbol() {
   int tint_symbol_2 = 1;
-  a.inner[1] = (a.inner[1] - 1u);
+  a.inner[tint_symbol_2] = (a.inner[tint_symbol_2] - 1u);
   a.inner.z = (a.inner.z - 1u);
 }
 
diff --git a/test/tint/statements/decrement/vector_component.wgsl.expected.msl b/test/tint/statements/decrement/vector_component.wgsl.expected.msl
index ce18144..7211766 100644
--- a/test/tint/statements/decrement/vector_component.wgsl.expected.msl
+++ b/test/tint/statements/decrement/vector_component.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void tint_symbol(device uint4* const tint_symbol_3) {
   int const tint_symbol_2 = 1;
-  (*(tint_symbol_3))[1] = ((*(tint_symbol_3))[1] - 1u);
+  (*(tint_symbol_3))[tint_symbol_2] = ((*(tint_symbol_3))[tint_symbol_2] - 1u);
   (*(tint_symbol_3))[2] = ((*(tint_symbol_3))[2] - 1u);
 }
 
diff --git a/test/tint/statements/increment/vector_component.wgsl.expected.glsl b/test/tint/statements/increment/vector_component.wgsl.expected.glsl
index dc1c567..a502a86 100644
--- a/test/tint/statements/increment/vector_component.wgsl.expected.glsl
+++ b/test/tint/statements/increment/vector_component.wgsl.expected.glsl
@@ -13,7 +13,7 @@
 } a;
 void tint_symbol() {
   int tint_symbol_2 = 1;
-  a.inner[1] = (a.inner[1] + 1u);
+  a.inner[tint_symbol_2] = (a.inner[tint_symbol_2] + 1u);
   a.inner.z = (a.inner.z + 1u);
 }
 
diff --git a/test/tint/statements/increment/vector_component.wgsl.expected.msl b/test/tint/statements/increment/vector_component.wgsl.expected.msl
index 8a3113b..8728854 100644
--- a/test/tint/statements/increment/vector_component.wgsl.expected.msl
+++ b/test/tint/statements/increment/vector_component.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void tint_symbol(device uint4* const tint_symbol_3) {
   int const tint_symbol_2 = 1;
-  (*(tint_symbol_3))[1] = ((*(tint_symbol_3))[1] + 1u);
+  (*(tint_symbol_3))[tint_symbol_2] = ((*(tint_symbol_3))[tint_symbol_2] + 1u);
   (*(tint_symbol_3))[2] = ((*(tint_symbol_3))[2] + 1u);
 }
 
diff --git a/test/tint/struct/type_constructor.wgsl.expected.glsl b/test/tint/struct/type_constructor.wgsl.expected.glsl
index f6a3289..e300f8d 100644
--- a/test/tint/struct/type_constructor.wgsl.expected.glsl
+++ b/test/tint/struct/type_constructor.wgsl.expected.glsl
@@ -26,27 +26,27 @@
   int x = 42;
   S1 empty = S1(0, 0, 0, 0);
   S1 nonempty = S1(1, 2, 3, 4);
-  S1 nonempty_with_expr = S1(1, 42, (42 + 1), nonempty.d);
+  S1 nonempty_with_expr = S1(1, x, (x + 1), nonempty.d);
   S3 nested_empty = S3(0, S1(0, 0, 0, 0), S2(0, S1(0, 0, 0, 0)));
   S1 tint_symbol_1 = S1(2, 3, 4, 5);
   S1 tint_symbol_2 = S1(7, 8, 9, 10);
   S2 tint_symbol_3 = S2(6, tint_symbol_2);
   S3 nested_nonempty = S3(1, tint_symbol_1, tint_symbol_3);
-  S1 tint_symbol_4 = S1(2, 42, (42 + 1), nested_nonempty.i.f.d);
+  S1 tint_symbol_4 = S1(2, x, (x + 1), nested_nonempty.i.f.d);
   S2 tint_symbol_5 = S2(6, nonempty);
   S3 nested_nonempty_with_expr = S3(1, tint_symbol_4, tint_symbol_5);
   S1 tint_symbol_6 = S1(0, 0, 0, 0);
   int subexpr_empty = tint_symbol_6.a;
   S1 tint_symbol_7 = S1(1, 2, 3, 4);
   int subexpr_nonempty = tint_symbol_7.b;
-  S1 tint_symbol_8 = S1(1, 42, (42 + 1), nonempty.d);
+  S1 tint_symbol_8 = S1(1, x, (x + 1), nonempty.d);
   int subexpr_nonempty_with_expr = tint_symbol_8.c;
   S2 tint_symbol_9 = S2(0, S1(0, 0, 0, 0));
   S1 subexpr_nested_empty = tint_symbol_9.f;
   S1 tint_symbol_10 = S1(2, 3, 4, 5);
   S2 tint_symbol_11 = S2(1, tint_symbol_10);
   S1 subexpr_nested_nonempty = tint_symbol_11.f;
-  S1 tint_symbol_12 = S1(2, 42, (42 + 1), nested_nonempty.i.f.d);
+  S1 tint_symbol_12 = S1(2, x, (x + 1), nested_nonempty.i.f.d);
   S2 tint_symbol_13 = S2(1, tint_symbol_12);
   S1 subexpr_nested_nonempty_with_expr = tint_symbol_13.f;
   T aosoa_empty[2] = T[2](T(int[2](0, 0)), T(int[2](0, 0)));
diff --git a/test/tint/struct/type_constructor.wgsl.expected.hlsl b/test/tint/struct/type_constructor.wgsl.expected.hlsl
index 0833fb4..f6285aa 100644
--- a/test/tint/struct/type_constructor.wgsl.expected.hlsl
+++ b/test/tint/struct/type_constructor.wgsl.expected.hlsl
@@ -22,27 +22,27 @@
   const int x = 42;
   const S1 empty = (S1)0;
   const S1 nonempty = {1, 2, 3, 4};
-  const S1 nonempty_with_expr = {1, 42, (42 + 1), nonempty.d};
+  const S1 nonempty_with_expr = {1, x, (x + 1), nonempty.d};
   const S3 nested_empty = (S3)0;
   const S1 tint_symbol = {2, 3, 4, 5};
   const S1 tint_symbol_1 = {7, 8, 9, 10};
   const S2 tint_symbol_2 = {6, tint_symbol_1};
   const S3 nested_nonempty = {1, tint_symbol, tint_symbol_2};
-  const S1 tint_symbol_3 = {2, 42, (42 + 1), nested_nonempty.i.f.d};
+  const S1 tint_symbol_3 = {2, x, (x + 1), nested_nonempty.i.f.d};
   const S2 tint_symbol_4 = {6, nonempty};
   const S3 nested_nonempty_with_expr = {1, tint_symbol_3, tint_symbol_4};
   const S1 tint_symbol_5 = (S1)0;
   const int subexpr_empty = tint_symbol_5.a;
   const S1 tint_symbol_6 = {1, 2, 3, 4};
   const int subexpr_nonempty = tint_symbol_6.b;
-  const S1 tint_symbol_7 = {1, 42, (42 + 1), nonempty.d};
+  const S1 tint_symbol_7 = {1, x, (x + 1), nonempty.d};
   const int subexpr_nonempty_with_expr = tint_symbol_7.c;
   const S2 tint_symbol_8 = (S2)0;
   const S1 subexpr_nested_empty = tint_symbol_8.f;
   const S1 tint_symbol_9 = {2, 3, 4, 5};
   const S2 tint_symbol_10 = {1, tint_symbol_9};
   const S1 subexpr_nested_nonempty = tint_symbol_10.f;
-  const S1 tint_symbol_11 = {2, 42, (42 + 1), nested_nonempty.i.f.d};
+  const S1 tint_symbol_11 = {2, x, (x + 1), nested_nonempty.i.f.d};
   const S2 tint_symbol_12 = {1, tint_symbol_11};
   const S1 subexpr_nested_nonempty_with_expr = tint_symbol_12.f;
   const T aosoa_empty[2] = (T[2])0;
diff --git a/test/tint/struct/type_constructor.wgsl.expected.msl b/test/tint/struct/type_constructor.wgsl.expected.msl
index 6e691c0..02d79f0 100644
--- a/test/tint/struct/type_constructor.wgsl.expected.msl
+++ b/test/tint/struct/type_constructor.wgsl.expected.msl
@@ -40,27 +40,27 @@
   int const x = 42;
   S1 const empty = {};
   S1 const nonempty = {.a=1, .b=2, .c=3, .d=4};
-  S1 const nonempty_with_expr = {.a=1, .b=42, .c=as_type<int>((as_type<uint>(42) + as_type<uint>(1))), .d=nonempty.d};
+  S1 const nonempty_with_expr = {.a=1, .b=x, .c=as_type<int>((as_type<uint>(x) + as_type<uint>(1))), .d=nonempty.d};
   S3 const nested_empty = {};
   S1 const tint_symbol_1 = {.a=2, .b=3, .c=4, .d=5};
   S1 const tint_symbol_2 = {.a=7, .b=8, .c=9, .d=10};
   S2 const tint_symbol_3 = {.e=6, .f=tint_symbol_2};
   S3 const nested_nonempty = {.g=1, .h=tint_symbol_1, .i=tint_symbol_3};
-  S1 const tint_symbol_4 = {.a=2, .b=42, .c=as_type<int>((as_type<uint>(42) + as_type<uint>(1))), .d=nested_nonempty.i.f.d};
+  S1 const tint_symbol_4 = {.a=2, .b=x, .c=as_type<int>((as_type<uint>(x) + as_type<uint>(1))), .d=nested_nonempty.i.f.d};
   S2 const tint_symbol_5 = {.e=6, .f=nonempty};
   S3 const nested_nonempty_with_expr = {.g=1, .h=tint_symbol_4, .i=tint_symbol_5};
   S1 const tint_symbol_6 = {};
   int const subexpr_empty = tint_symbol_6.a;
   S1 const tint_symbol_7 = {.a=1, .b=2, .c=3, .d=4};
   int const subexpr_nonempty = tint_symbol_7.b;
-  S1 const tint_symbol_8 = {.a=1, .b=42, .c=as_type<int>((as_type<uint>(42) + as_type<uint>(1))), .d=nonempty.d};
+  S1 const tint_symbol_8 = {.a=1, .b=x, .c=as_type<int>((as_type<uint>(x) + as_type<uint>(1))), .d=nonempty.d};
   int const subexpr_nonempty_with_expr = tint_symbol_8.c;
   S2 const tint_symbol_9 = {};
   S1 const subexpr_nested_empty = tint_symbol_9.f;
   S1 const tint_symbol_10 = {.a=2, .b=3, .c=4, .d=5};
   S2 const tint_symbol_11 = {.e=1, .f=tint_symbol_10};
   S1 const subexpr_nested_nonempty = tint_symbol_11.f;
-  S1 const tint_symbol_12 = {.a=2, .b=42, .c=as_type<int>((as_type<uint>(42) + as_type<uint>(1))), .d=nested_nonempty.i.f.d};
+  S1 const tint_symbol_12 = {.a=2, .b=x, .c=as_type<int>((as_type<uint>(x) + as_type<uint>(1))), .d=nested_nonempty.i.f.d};
   S2 const tint_symbol_13 = {.e=1, .f=tint_symbol_12};
   S1 const subexpr_nested_nonempty_with_expr = tint_symbol_13.f;
   tint_array<T, 2> const aosoa_empty = tint_array<T, 2>{};