[hlsl] Regen skips for all tint e2e hlsl files

Ran:
```
./tools/run tests -tint ./out/debug/tint -format hlsl --generate-skip
./tools/run tests -tint ./out/debug/tin -format hlsl -use-ir --generate-skip
```

Change-Id: Ib6802c529cc3dd82fc244c7cb83f241cb70c4c29
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/203396
Auto-Submit: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.fxc.hlsl
index d8c50a19..090d418 100644
--- a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.fxc.hlsl
@@ -1,6 +1,11 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 ByteAddressBuffer sb : register(t0);
+RWByteAddressBuffer s : register(u1);
 
 struct tint_symbol_1 {
   uint idx : SV_GroupIndex;
@@ -101,42 +106,43 @@
 }
 
 void main_inner(uint idx) {
-  const float scalar_f32 = asfloat(sb.Load((800u * idx)));
-  const int scalar_i32 = asint(sb.Load(((800u * idx) + 4u)));
-  const uint scalar_u32 = sb.Load(((800u * idx) + 8u));
-  const float16_t scalar_f16 = sb.Load<float16_t>(((800u * idx) + 12u));
-  const float2 vec2_f32 = asfloat(sb.Load2(((800u * idx) + 16u)));
-  const int2 vec2_i32 = asint(sb.Load2(((800u * idx) + 24u)));
-  const uint2 vec2_u32 = sb.Load2(((800u * idx) + 32u));
-  const vector<float16_t, 2> vec2_f16 = sb.Load<vector<float16_t, 2> >(((800u * idx) + 40u));
-  const float3 vec3_f32 = asfloat(sb.Load3(((800u * idx) + 48u)));
-  const int3 vec3_i32 = asint(sb.Load3(((800u * idx) + 64u)));
-  const uint3 vec3_u32 = sb.Load3(((800u * idx) + 80u));
-  const vector<float16_t, 3> vec3_f16 = sb.Load<vector<float16_t, 3> >(((800u * idx) + 96u));
-  const float4 vec4_f32 = asfloat(sb.Load4(((800u * idx) + 112u)));
-  const int4 vec4_i32 = asint(sb.Load4(((800u * idx) + 128u)));
-  const uint4 vec4_u32 = sb.Load4(((800u * idx) + 144u));
-  const vector<float16_t, 4> vec4_f16 = sb.Load<vector<float16_t, 4> >(((800u * idx) + 160u));
-  const float2x2 mat2x2_f32 = sb_load_16(((800u * idx) + 168u));
-  const float2x3 mat2x3_f32 = sb_load_17(((800u * idx) + 192u));
-  const float2x4 mat2x4_f32 = sb_load_18(((800u * idx) + 224u));
-  const float3x2 mat3x2_f32 = sb_load_19(((800u * idx) + 256u));
-  const float3x3 mat3x3_f32 = sb_load_20(((800u * idx) + 288u));
-  const float3x4 mat3x4_f32 = sb_load_21(((800u * idx) + 336u));
-  const float4x2 mat4x2_f32 = sb_load_22(((800u * idx) + 384u));
-  const float4x3 mat4x3_f32 = sb_load_23(((800u * idx) + 416u));
-  const float4x4 mat4x4_f32 = sb_load_24(((800u * idx) + 480u));
-  const matrix<float16_t, 2, 2> mat2x2_f16 = sb_load_25(((800u * idx) + 544u));
-  const matrix<float16_t, 2, 3> mat2x3_f16 = sb_load_26(((800u * idx) + 552u));
-  const matrix<float16_t, 2, 4> mat2x4_f16 = sb_load_27(((800u * idx) + 568u));
-  const matrix<float16_t, 3, 2> mat3x2_f16 = sb_load_28(((800u * idx) + 584u));
-  const matrix<float16_t, 3, 3> mat3x3_f16 = sb_load_29(((800u * idx) + 600u));
-  const matrix<float16_t, 3, 4> mat3x4_f16 = sb_load_30(((800u * idx) + 624u));
-  const matrix<float16_t, 4, 2> mat4x2_f16 = sb_load_31(((800u * idx) + 648u));
-  const matrix<float16_t, 4, 3> mat4x3_f16 = sb_load_32(((800u * idx) + 664u));
-  const matrix<float16_t, 4, 4> mat4x4_f16 = sb_load_33(((800u * idx) + 696u));
-  const float3 arr2_vec3_f32[2] = sb_load_34(((800u * idx) + 736u));
-  const matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = sb_load_35(((800u * idx) + 768u));
+  float scalar_f32 = asfloat(sb.Load((800u * idx)));
+  int scalar_i32 = asint(sb.Load(((800u * idx) + 4u)));
+  uint scalar_u32 = sb.Load(((800u * idx) + 8u));
+  float16_t scalar_f16 = sb.Load<float16_t>(((800u * idx) + 12u));
+  float2 vec2_f32 = asfloat(sb.Load2(((800u * idx) + 16u)));
+  int2 vec2_i32 = asint(sb.Load2(((800u * idx) + 24u)));
+  uint2 vec2_u32 = sb.Load2(((800u * idx) + 32u));
+  vector<float16_t, 2> vec2_f16 = sb.Load<vector<float16_t, 2> >(((800u * idx) + 40u));
+  float3 vec3_f32 = asfloat(sb.Load3(((800u * idx) + 48u)));
+  int3 vec3_i32 = asint(sb.Load3(((800u * idx) + 64u)));
+  uint3 vec3_u32 = sb.Load3(((800u * idx) + 80u));
+  vector<float16_t, 3> vec3_f16 = sb.Load<vector<float16_t, 3> >(((800u * idx) + 96u));
+  float4 vec4_f32 = asfloat(sb.Load4(((800u * idx) + 112u)));
+  int4 vec4_i32 = asint(sb.Load4(((800u * idx) + 128u)));
+  uint4 vec4_u32 = sb.Load4(((800u * idx) + 144u));
+  vector<float16_t, 4> vec4_f16 = sb.Load<vector<float16_t, 4> >(((800u * idx) + 160u));
+  float2x2 mat2x2_f32 = sb_load_16(((800u * idx) + 168u));
+  float2x3 mat2x3_f32 = sb_load_17(((800u * idx) + 192u));
+  float2x4 mat2x4_f32 = sb_load_18(((800u * idx) + 224u));
+  float3x2 mat3x2_f32 = sb_load_19(((800u * idx) + 256u));
+  float3x3 mat3x3_f32 = sb_load_20(((800u * idx) + 288u));
+  float3x4 mat3x4_f32 = sb_load_21(((800u * idx) + 336u));
+  float4x2 mat4x2_f32 = sb_load_22(((800u * idx) + 384u));
+  float4x3 mat4x3_f32 = sb_load_23(((800u * idx) + 416u));
+  float4x4 mat4x4_f32 = sb_load_24(((800u * idx) + 480u));
+  matrix<float16_t, 2, 2> mat2x2_f16 = sb_load_25(((800u * idx) + 544u));
+  matrix<float16_t, 2, 3> mat2x3_f16 = sb_load_26(((800u * idx) + 552u));
+  matrix<float16_t, 2, 4> mat2x4_f16 = sb_load_27(((800u * idx) + 568u));
+  matrix<float16_t, 3, 2> mat3x2_f16 = sb_load_28(((800u * idx) + 584u));
+  matrix<float16_t, 3, 3> mat3x3_f16 = sb_load_29(((800u * idx) + 600u));
+  matrix<float16_t, 3, 4> mat3x4_f16 = sb_load_30(((800u * idx) + 624u));
+  matrix<float16_t, 4, 2> mat4x2_f16 = sb_load_31(((800u * idx) + 648u));
+  matrix<float16_t, 4, 3> mat4x3_f16 = sb_load_32(((800u * idx) + 664u));
+  matrix<float16_t, 4, 4> mat4x4_f16 = sb_load_33(((800u * idx) + 696u));
+  float3 arr2_vec3_f32[2] = sb_load_34(((800u * idx) + 736u));
+  matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = sb_load_35(((800u * idx) + 768u));
+  s.Store(0u, asuint((((((((((((((((((((((((((((((((((((tint_ftoi(scalar_f32) + scalar_i32) + int(scalar_u32)) + int(scalar_f16)) + tint_ftoi(vec2_f32.x)) + vec2_i32.x) + int(vec2_u32.x)) + int(vec2_f16.x)) + tint_ftoi(vec3_f32.y)) + vec3_i32.y) + int(vec3_u32.y)) + int(vec3_f16.y)) + tint_ftoi(vec4_f32.z)) + vec4_i32.z) + int(vec4_u32.z)) + int(vec4_f16.z)) + tint_ftoi(mat2x2_f32[0].x)) + tint_ftoi(mat2x3_f32[0].x)) + tint_ftoi(mat2x4_f32[0].x)) + tint_ftoi(mat3x2_f32[0].x)) + tint_ftoi(mat3x3_f32[0].x)) + tint_ftoi(mat3x4_f32[0].x)) + tint_ftoi(mat4x2_f32[0].x)) + tint_ftoi(mat4x3_f32[0].x)) + tint_ftoi(mat4x4_f32[0].x)) + int(mat2x2_f16[0].x)) + int(mat2x3_f16[0].x)) + int(mat2x4_f16[0].x)) + int(mat3x2_f16[0].x)) + int(mat3x3_f16[0].x)) + int(mat3x4_f16[0].x)) + int(mat4x2_f16[0].x)) + int(mat4x3_f16[0].x)) + int(mat4x4_f16[0].x)) + int(arr2_mat4x2_f16[0][0].x)) + tint_ftoi(arr2_vec3_f32[0].x))));
 }
 
 [numthreads(1, 1, 1)]
@@ -144,3 +150,6 @@
   main_inner(tint_symbol.idx);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020BC8A3A850(48,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl
index 0a09648..286d7f5 100644
--- a/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl
@@ -246,5 +246,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DDC5FAA170(12,21-29): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F1DF34C140(12,21-29): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.fxc.hlsl
index 42ff444..9ae8cab 100644
--- a/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.fxc.hlsl
@@ -138,15 +138,15 @@
   sb.Store(((800u * idx) + 8u), asuint(0u));
   sb.Store<float16_t>(((800u * idx) + 12u), float16_t(0.0h));
   sb.Store2(((800u * idx) + 16u), asuint((0.0f).xx));
-  sb.Store2(((800u * idx) + 24u), asuint((0).xx));
+  sb.Store2(((800u * idx) + 24u), asuint(int2((0).xx)));
   sb.Store2(((800u * idx) + 32u), asuint((0u).xx));
   sb.Store<vector<float16_t, 2> >(((800u * idx) + 40u), (float16_t(0.0h)).xx);
   sb.Store3(((800u * idx) + 48u), asuint((0.0f).xxx));
-  sb.Store3(((800u * idx) + 64u), asuint((0).xxx));
+  sb.Store3(((800u * idx) + 64u), asuint(int3((0).xxx)));
   sb.Store3(((800u * idx) + 80u), asuint((0u).xxx));
   sb.Store<vector<float16_t, 3> >(((800u * idx) + 96u), (float16_t(0.0h)).xxx);
   sb.Store4(((800u * idx) + 112u), asuint((0.0f).xxxx));
-  sb.Store4(((800u * idx) + 128u), asuint((0).xxxx));
+  sb.Store4(((800u * idx) + 128u), asuint(int4((0).xxxx)));
   sb.Store4(((800u * idx) + 144u), asuint((0u).xxxx));
   sb.Store<vector<float16_t, 4> >(((800u * idx) + 160u), (float16_t(0.0h)).xxxx);
   sb_store_16(((800u * idx) + 168u), float2x2((0.0f).xx, (0.0f).xx));
@@ -167,9 +167,9 @@
   sb_store_31(((800u * idx) + 648u), matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx));
   sb_store_32(((800u * idx) + 664u), matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx));
   sb_store_33(((800u * idx) + 696u), matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx));
-  const float3 tint_symbol_2[2] = (float3[2])0;
+  float3 tint_symbol_2[2] = (float3[2])0;
   sb_store_34(((800u * idx) + 736u), tint_symbol_2);
-  const matrix<float16_t, 4, 2> tint_symbol_3[2] = (matrix<float16_t, 4, 2>[2])0;
+  matrix<float16_t, 4, 2> tint_symbol_3[2] = (matrix<float16_t, 4, 2>[2])0;
   sb_store_35(((800u * idx) + 768u), tint_symbol_3);
 }
 
@@ -178,3 +178,7 @@
   main_inner(tint_symbol.idx);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023E8772C480(61,38-46): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023E8772C480(62,3-10): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.fxc.hlsl
index fded716..68c0b8c 100644
--- a/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.fxc.hlsl
@@ -205,6 +205,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E3A924A9E0(7,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001E3A924A9E0(8,3-10): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001F73B20B3A0(7,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F73B20B3A0(8,3-10): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.fxc.hlsl
index 8c94db2..3d4b224 100644
--- a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.fxc.hlsl
@@ -1,5 +1,9 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 struct Inner {
   int scalar_i32;
   float scalar_f32;
@@ -7,6 +11,7 @@
 };
 
 ByteAddressBuffer sb : register(t0);
+RWByteAddressBuffer s : register(u1);
 
 float2x2 sb_load_16(uint offset) {
   return float2x2(asfloat(sb.Load2((offset + 0u))), asfloat(sb.Load2((offset + 8u))));
@@ -103,7 +108,7 @@
 }
 
 Inner sb_load_36(uint offset) {
-  const Inner tint_symbol = {asint(sb.Load((offset + 0u))), asfloat(sb.Load((offset + 4u))), sb.Load<float16_t>((offset + 8u))};
+  Inner tint_symbol = {asint(sb.Load((offset + 0u))), asfloat(sb.Load((offset + 4u))), sb.Load<float16_t>((offset + 8u))};
   return tint_symbol;
 }
 
@@ -120,43 +125,47 @@
 
 [numthreads(1, 1, 1)]
 void main() {
-  const float scalar_f32 = asfloat(sb.Load(0u));
-  const int scalar_i32 = asint(sb.Load(4u));
-  const uint scalar_u32 = sb.Load(8u);
-  const float16_t scalar_f16 = sb.Load<float16_t>(12u);
-  const float2 vec2_f32 = asfloat(sb.Load2(16u));
-  const int2 vec2_i32 = asint(sb.Load2(24u));
-  const uint2 vec2_u32 = sb.Load2(32u);
-  const vector<float16_t, 2> vec2_f16 = sb.Load<vector<float16_t, 2> >(40u);
-  const float3 vec3_f32 = asfloat(sb.Load3(48u));
-  const int3 vec3_i32 = asint(sb.Load3(64u));
-  const uint3 vec3_u32 = sb.Load3(80u);
-  const vector<float16_t, 3> vec3_f16 = sb.Load<vector<float16_t, 3> >(96u);
-  const float4 vec4_f32 = asfloat(sb.Load4(112u));
-  const int4 vec4_i32 = asint(sb.Load4(128u));
-  const uint4 vec4_u32 = sb.Load4(144u);
-  const vector<float16_t, 4> vec4_f16 = sb.Load<vector<float16_t, 4> >(160u);
-  const float2x2 mat2x2_f32 = sb_load_16(168u);
-  const float2x3 mat2x3_f32 = sb_load_17(192u);
-  const float2x4 mat2x4_f32 = sb_load_18(224u);
-  const float3x2 mat3x2_f32 = sb_load_19(256u);
-  const float3x3 mat3x3_f32 = sb_load_20(288u);
-  const float3x4 mat3x4_f32 = sb_load_21(336u);
-  const float4x2 mat4x2_f32 = sb_load_22(384u);
-  const float4x3 mat4x3_f32 = sb_load_23(416u);
-  const float4x4 mat4x4_f32 = sb_load_24(480u);
-  const matrix<float16_t, 2, 2> mat2x2_f16 = sb_load_25(544u);
-  const matrix<float16_t, 2, 3> mat2x3_f16 = sb_load_26(552u);
-  const matrix<float16_t, 2, 4> mat2x4_f16 = sb_load_27(568u);
-  const matrix<float16_t, 3, 2> mat3x2_f16 = sb_load_28(584u);
-  const matrix<float16_t, 3, 3> mat3x3_f16 = sb_load_29(600u);
-  const matrix<float16_t, 3, 4> mat3x4_f16 = sb_load_30(624u);
-  const matrix<float16_t, 4, 2> mat4x2_f16 = sb_load_31(648u);
-  const matrix<float16_t, 4, 3> mat4x3_f16 = sb_load_32(664u);
-  const matrix<float16_t, 4, 4> mat4x4_f16 = sb_load_33(696u);
-  const float3 arr2_vec3_f32[2] = sb_load_34(736u);
-  const matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = sb_load_35(768u);
-  const Inner struct_inner = sb_load_36(800u);
-  const Inner array_struct_inner[4] = sb_load_37(812u);
+  float scalar_f32 = asfloat(sb.Load(0u));
+  int scalar_i32 = asint(sb.Load(4u));
+  uint scalar_u32 = sb.Load(8u);
+  float16_t scalar_f16 = sb.Load<float16_t>(12u);
+  float2 vec2_f32 = asfloat(sb.Load2(16u));
+  int2 vec2_i32 = asint(sb.Load2(24u));
+  uint2 vec2_u32 = sb.Load2(32u);
+  vector<float16_t, 2> vec2_f16 = sb.Load<vector<float16_t, 2> >(40u);
+  float3 vec3_f32 = asfloat(sb.Load3(48u));
+  int3 vec3_i32 = asint(sb.Load3(64u));
+  uint3 vec3_u32 = sb.Load3(80u);
+  vector<float16_t, 3> vec3_f16 = sb.Load<vector<float16_t, 3> >(96u);
+  float4 vec4_f32 = asfloat(sb.Load4(112u));
+  int4 vec4_i32 = asint(sb.Load4(128u));
+  uint4 vec4_u32 = sb.Load4(144u);
+  vector<float16_t, 4> vec4_f16 = sb.Load<vector<float16_t, 4> >(160u);
+  float2x2 mat2x2_f32 = sb_load_16(168u);
+  float2x3 mat2x3_f32 = sb_load_17(192u);
+  float2x4 mat2x4_f32 = sb_load_18(224u);
+  float3x2 mat3x2_f32 = sb_load_19(256u);
+  float3x3 mat3x3_f32 = sb_load_20(288u);
+  float3x4 mat3x4_f32 = sb_load_21(336u);
+  float4x2 mat4x2_f32 = sb_load_22(384u);
+  float4x3 mat4x3_f32 = sb_load_23(416u);
+  float4x4 mat4x4_f32 = sb_load_24(480u);
+  matrix<float16_t, 2, 2> mat2x2_f16 = sb_load_25(544u);
+  matrix<float16_t, 2, 3> mat2x3_f16 = sb_load_26(552u);
+  matrix<float16_t, 2, 4> mat2x4_f16 = sb_load_27(568u);
+  matrix<float16_t, 3, 2> mat3x2_f16 = sb_load_28(584u);
+  matrix<float16_t, 3, 3> mat3x3_f16 = sb_load_29(600u);
+  matrix<float16_t, 3, 4> mat3x4_f16 = sb_load_30(624u);
+  matrix<float16_t, 4, 2> mat4x2_f16 = sb_load_31(648u);
+  matrix<float16_t, 4, 3> mat4x3_f16 = sb_load_32(664u);
+  matrix<float16_t, 4, 4> mat4x4_f16 = sb_load_33(696u);
+  float3 arr2_vec3_f32[2] = sb_load_34(736u);
+  matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = sb_load_35(768u);
+  Inner struct_inner = sb_load_36(800u);
+  Inner array_struct_inner[4] = sb_load_37(812u);
+  s.Store(0u, asuint((((((((((((((((((((((((((((((((((((((tint_ftoi(scalar_f32) + scalar_i32) + int(scalar_u32)) + int(scalar_f16)) + tint_ftoi(vec2_f32.x)) + vec2_i32.x) + int(vec2_u32.x)) + int(vec2_f16.x)) + tint_ftoi(vec3_f32.y)) + vec3_i32.y) + int(vec3_u32.y)) + int(vec3_f16.y)) + tint_ftoi(vec4_f32.z)) + vec4_i32.z) + int(vec4_u32.z)) + int(vec4_f16.z)) + tint_ftoi(mat2x2_f32[0].x)) + tint_ftoi(mat2x3_f32[0].x)) + tint_ftoi(mat2x4_f32[0].x)) + tint_ftoi(mat3x2_f32[0].x)) + tint_ftoi(mat3x3_f32[0].x)) + tint_ftoi(mat3x4_f32[0].x)) + tint_ftoi(mat4x2_f32[0].x)) + tint_ftoi(mat4x3_f32[0].x)) + tint_ftoi(mat4x4_f32[0].x)) + int(mat2x2_f16[0].x)) + int(mat2x3_f16[0].x)) + int(mat2x4_f16[0].x)) + int(mat3x2_f16[0].x)) + int(mat3x3_f16[0].x)) + int(mat3x4_f16[0].x)) + int(mat4x2_f16[0].x)) + int(mat4x3_f16[0].x)) + int(mat4x4_f16[0].x)) + tint_ftoi(arr2_vec3_f32[0].x)) + int(arr2_mat4x2_f16[0][0].x)) + struct_inner.scalar_i32) + array_struct_inner[0].scalar_i32)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002378BE1EBB0(8,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.fxc.hlsl
index bdd98ab..8613ca6 100644
--- a/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/static_index/read_f16.wgsl.expected.ir.fxc.hlsl
@@ -278,5 +278,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029A7FB9CFD0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000019D44DA5220(4,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.fxc.hlsl
index 7d5c0b9..d3bb3e2 100644
--- a/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.fxc.hlsl
@@ -156,15 +156,15 @@
   sb.Store(8u, asuint(0u));
   sb.Store<float16_t>(12u, float16_t(0.0h));
   sb.Store2(16u, asuint((0.0f).xx));
-  sb.Store2(24u, asuint((0).xx));
+  sb.Store2(24u, asuint(int2((0).xx)));
   sb.Store2(32u, asuint((0u).xx));
   sb.Store<vector<float16_t, 2> >(40u, (float16_t(0.0h)).xx);
   sb.Store3(48u, asuint((0.0f).xxx));
-  sb.Store3(64u, asuint((0).xxx));
+  sb.Store3(64u, asuint(int3((0).xxx)));
   sb.Store3(80u, asuint((0u).xxx));
   sb.Store<vector<float16_t, 3> >(96u, (float16_t(0.0h)).xxx);
   sb.Store4(112u, asuint((0.0f).xxxx));
-  sb.Store4(128u, asuint((0).xxxx));
+  sb.Store4(128u, asuint(int4((0).xxxx)));
   sb.Store4(144u, asuint((0u).xxxx));
   sb.Store<vector<float16_t, 4> >(160u, (float16_t(0.0h)).xxxx);
   sb_store_16(168u, float2x2((0.0f).xx, (0.0f).xx));
@@ -185,13 +185,16 @@
   sb_store_31(648u, matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx));
   sb_store_32(664u, matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx));
   sb_store_33(696u, matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx));
-  const float3 tint_symbol[2] = (float3[2])0;
+  float3 tint_symbol[2] = (float3[2])0;
   sb_store_34(736u, tint_symbol);
-  const matrix<float16_t, 4, 2> tint_symbol_1[2] = (matrix<float16_t, 4, 2>[2])0;
+  matrix<float16_t, 4, 2> tint_symbol_1[2] = (matrix<float16_t, 4, 2>[2])0;
   sb_store_35(768u, tint_symbol_1);
-  const Inner tint_symbol_2 = (Inner)0;
+  Inner tint_symbol_2 = (Inner)0;
   sb_store_36(800u, tint_symbol_2);
-  const Inner tint_symbol_3[4] = (Inner[4])0;
+  Inner tint_symbol_3[4] = (Inner[4])0;
   sb_store_37(812u, tint_symbol_3);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A572716CC0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.fxc.hlsl
index e250fd9..362c2b3 100644
--- a/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/static_index/write_f16.wgsl.expected.ir.fxc.hlsl
@@ -224,5 +224,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019D10B18DB0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023DEC8FA870(4,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.fxc.hlsl
index 6633a27..3655454 100644
--- a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.fxc.hlsl
@@ -28,3 +28,6 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015AA2BE4420(4,39-47): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.fxc.hlsl
index e1f1f21..a1a31f9 100644
--- a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.fxc.hlsl
@@ -50,5 +50,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014000C3E830(4,21-29): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000295E8A0C8E0(4,21-29): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/storage/types/f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/f16.wgsl.expected.fxc.hlsl
index e7f8874..18b7a9b 100644
--- a/test/tint/buffer/storage/types/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
   tint_symbol_1.Store<float16_t>(0u, tint_symbol.Load<float16_t>(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024D32420560(6,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.fxc.hlsl
index 4e2bf44c..f0c85e0 100644
--- a/test/tint/buffer/storage/types/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,5 +9,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018D8C9B3B30(6,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000014881472E20(6,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.fxc.hlsl
index 13b6e82..e695c46 100644
--- a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.fxc.hlsl
@@ -17,3 +17,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CCD84DD750(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CCD84DD750(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl
index cc73ddb..7ac749c 100644
--- a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl
@@ -19,6 +19,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000291B00EED40(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000291B00EED40(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001E2666938C0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E2666938C0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.fxc.hlsl
index c3a50cf..3f501c8 100644
--- a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.fxc.hlsl
@@ -17,3 +17,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A95EA6F920(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A95EA6F920(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl
index 368026a..bf8c17b 100644
--- a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl
@@ -19,6 +19,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000229646F9710(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000229646F9710(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001EFD0F6FB00(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EFD0F6FB00(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.fxc.hlsl
index e1915f1..c99fa42 100644
--- a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.fxc.hlsl
@@ -17,3 +17,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002876BA3FE90(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002876BA3FE90(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl
index 38adddc..c0788bb 100644
--- a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl
@@ -19,6 +19,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019F1F819A70(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000019F1F819A70(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000018C09D6D0E0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018C09D6D0E0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.fxc.hlsl
index f17ef3e..40255a5 100644
--- a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.fxc.hlsl
@@ -18,3 +18,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018ABB22B940(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018ABB22B940(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl
index dd793b7..71ca298 100644
--- a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl
@@ -21,6 +21,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FF8777EFA0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001FF8777EFA0(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001F1DB30FFA0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F1DB30FFA0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.fxc.hlsl
index ce11487..9631df7 100644
--- a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.fxc.hlsl
@@ -18,3 +18,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021ED2BDA6C0(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021ED2BDA6C0(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl
index ba1137b..6c5dcd6 100644
--- a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl
@@ -21,6 +21,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026F3618F350(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026F3618F350(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000018D7D5038C0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018D7D5038C0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.fxc.hlsl
index 50b52d5..8ad9fb8 100644
--- a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.fxc.hlsl
@@ -18,3 +18,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000122C8D4B330(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000122C8D4B330(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl
index 8bfe067..23422ad 100644
--- a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl
@@ -21,6 +21,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017D349BEEC0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000017D349BEEC0(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002B32B12FB00(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B32B12FB00(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.fxc.hlsl
index d8ae568..cade176 100644
--- a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.fxc.hlsl
@@ -19,3 +19,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F1DA9C3CA0(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F1DA9C3CA0(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl
index 7e676f2..0f174c3 100644
--- a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl
@@ -23,6 +23,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E66D5AF120(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001E66D5AF120(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000027B5E3F4CE0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027B5E3F4CE0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.fxc.hlsl
index e43970a..70a8f22 100644
--- a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.fxc.hlsl
@@ -19,3 +19,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001857575B940(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001857575B940(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl
index d01b423..0ad08ab 100644
--- a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl
@@ -23,6 +23,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001442C35E280(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001442C35E280(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000021122484CE0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021122484CE0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.fxc.hlsl
index ad8c986..fc53388 100644
--- a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.fxc.hlsl
@@ -19,3 +19,7 @@
   tint_symbol_1_store(0u, tint_symbol_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002681375D2C0(4,46-54): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002681375D2C0(5,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl
index dec2514..0d92142 100644
--- a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl
@@ -23,6 +23,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027CB4F69350(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000027CB4F69350(5,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001D55B645FF0(4,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D55B645FF0(5,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.fxc.hlsl
index e7f8874..9753363 100644
--- a/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
   tint_symbol_1.Store<float16_t>(0u, tint_symbol.Load<float16_t>(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB547FFCE0(6,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.fxc.hlsl
index bf46860..b083082 100644
--- a/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.fxc.hlsl
@@ -9,5 +9,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002871BF91440(6,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001C77B0A2790(6,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.fxc.hlsl
index 3014b31..385fae8 100644
--- a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.fxc.hlsl
@@ -17,12 +17,12 @@
 }
 
 Inner tint_symbol_load_1(uint offset) {
-  const Inner tint_symbol_2 = {tint_symbol.Load<float16_t>((offset + 0u)), tint_symbol.Load<vector<float16_t, 3> >((offset + 8u)), tint_symbol_load_4((offset + 16u))};
+  Inner tint_symbol_2 = {tint_symbol.Load<float16_t>((offset + 0u)), tint_symbol.Load<vector<float16_t, 3> >((offset + 8u)), tint_symbol_load_4((offset + 16u))};
   return tint_symbol_2;
 }
 
 S tint_symbol_load(uint offset) {
-  const S tint_symbol_3 = {tint_symbol_load_1((offset + 0u))};
+  S tint_symbol_3 = {tint_symbol_load_1((offset + 0u))};
   return tint_symbol_3;
 }
 
@@ -43,7 +43,10 @@
 
 [numthreads(1, 1, 1)]
 void main() {
-  const S t = tint_symbol_load(0u);
+  S t = tint_symbol_load(0u);
   tint_symbol_1_store(0u, t);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000212B65B1490(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.fxc.hlsl
index 79f2864..5e18505 100644
--- a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.fxc.hlsl
@@ -55,5 +55,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C2DB29E6D0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EC988E4CD0(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.fxc.hlsl
index d464ceb..9d5ceeb 100644
--- a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
   tint_symbol_1.Store<vector<float16_t, 2> >(0u, tint_symbol.Load<vector<float16_t, 2> >(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018882BC0670(6,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.fxc.hlsl
index 512de9f..f91eb09 100644
--- a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.fxc.hlsl
@@ -9,5 +9,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019326C9E7E0(6,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000020F8A503780(6,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.fxc.hlsl
index c144b7c..e65d6b2 100644
--- a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
   tint_symbol_1.Store<vector<float16_t, 3> >(0u, tint_symbol.Load<vector<float16_t, 3> >(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ED9B3CFF20(6,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.fxc.hlsl
index 927ae5e..0ed3b13 100644
--- a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.fxc.hlsl
@@ -9,5 +9,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A26A21F140(6,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002AE00E53750(6,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.fxc.hlsl
index ac48c67..7ed9688 100644
--- a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
   tint_symbol_1.Store<vector<float16_t, 4> >(0u, tint_symbol.Load<vector<float16_t, 4> >(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017A82EC0120(6,3-21): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.fxc.hlsl
index 6e6f6b5..57aecfe 100644
--- a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.fxc.hlsl
@@ -9,5 +9,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016F2555E870(6,3-21): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000023086413060(6,3-21): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.fxc.hlsl
index d46e10e..b6494e5 100644
--- a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,13 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 cbuffer cbuffer_ub : register(b0) {
   uint4 ub[400];
 };
+RWByteAddressBuffer s : register(u1);
 
 struct tint_symbol_1 {
   uint idx : SV_GroupIndex;
@@ -249,70 +254,71 @@
 
 void main_inner(uint idx) {
   const uint scalar_offset_55 = ((800u * idx)) / 4;
-  const float scalar_f32 = asfloat(ub[scalar_offset_55 / 4][scalar_offset_55 % 4]);
+  float scalar_f32 = asfloat(ub[scalar_offset_55 / 4][scalar_offset_55 % 4]);
   const uint scalar_offset_56 = (((800u * idx) + 4u)) / 4;
-  const int scalar_i32 = asint(ub[scalar_offset_56 / 4][scalar_offset_56 % 4]);
+  int scalar_i32 = asint(ub[scalar_offset_56 / 4][scalar_offset_56 % 4]);
   const uint scalar_offset_57 = (((800u * idx) + 8u)) / 4;
-  const uint scalar_u32 = ub[scalar_offset_57 / 4][scalar_offset_57 % 4];
+  uint scalar_u32 = ub[scalar_offset_57 / 4][scalar_offset_57 % 4];
   const uint scalar_offset_bytes = (((800u * idx) + 12u));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t scalar_f16 = float16_t(f16tof32(((ub[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t scalar_f16 = float16_t(f16tof32(((ub[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   const uint scalar_offset_58 = (((800u * idx) + 16u)) / 4;
   uint4 ubo_load_54 = ub[scalar_offset_58 / 4];
-  const float2 vec2_f32 = asfloat(((scalar_offset_58 & 2) ? ubo_load_54.zw : ubo_load_54.xy));
+  float2 vec2_f32 = asfloat(((scalar_offset_58 & 2) ? ubo_load_54.zw : ubo_load_54.xy));
   const uint scalar_offset_59 = (((800u * idx) + 24u)) / 4;
   uint4 ubo_load_55 = ub[scalar_offset_59 / 4];
-  const int2 vec2_i32 = asint(((scalar_offset_59 & 2) ? ubo_load_55.zw : ubo_load_55.xy));
+  int2 vec2_i32 = asint(((scalar_offset_59 & 2) ? ubo_load_55.zw : ubo_load_55.xy));
   const uint scalar_offset_60 = (((800u * idx) + 32u)) / 4;
   uint4 ubo_load_56 = ub[scalar_offset_60 / 4];
-  const uint2 vec2_u32 = ((scalar_offset_60 & 2) ? ubo_load_56.zw : ubo_load_56.xy);
+  uint2 vec2_u32 = ((scalar_offset_60 & 2) ? ubo_load_56.zw : ubo_load_56.xy);
   const uint scalar_offset_61 = (((800u * idx) + 40u)) / 4;
   uint ubo_load_57 = ub[scalar_offset_61 / 4][scalar_offset_61 % 4];
-  const vector<float16_t, 2> vec2_f16 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_57 & 0xFFFF)), float16_t(f16tof32(ubo_load_57 >> 16)));
+  vector<float16_t, 2> vec2_f16 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_57 & 0xFFFF)), float16_t(f16tof32(ubo_load_57 >> 16)));
   const uint scalar_offset_62 = (((800u * idx) + 48u)) / 4;
-  const float3 vec3_f32 = asfloat(ub[scalar_offset_62 / 4].xyz);
+  float3 vec3_f32 = asfloat(ub[scalar_offset_62 / 4].xyz);
   const uint scalar_offset_63 = (((800u * idx) + 64u)) / 4;
-  const int3 vec3_i32 = asint(ub[scalar_offset_63 / 4].xyz);
+  int3 vec3_i32 = asint(ub[scalar_offset_63 / 4].xyz);
   const uint scalar_offset_64 = (((800u * idx) + 80u)) / 4;
-  const uint3 vec3_u32 = ub[scalar_offset_64 / 4].xyz;
+  uint3 vec3_u32 = ub[scalar_offset_64 / 4].xyz;
   const uint scalar_offset_65 = (((800u * idx) + 96u)) / 4;
   uint4 ubo_load_59 = ub[scalar_offset_65 / 4];
   uint2 ubo_load_58 = ((scalar_offset_65 & 2) ? ubo_load_59.zw : ubo_load_59.xy);
   vector<float16_t, 2> ubo_load_58_xz = vector<float16_t, 2>(f16tof32(ubo_load_58 & 0xFFFF));
   float16_t ubo_load_58_y = f16tof32(ubo_load_58[0] >> 16);
-  const vector<float16_t, 3> vec3_f16 = vector<float16_t, 3>(ubo_load_58_xz[0], ubo_load_58_y, ubo_load_58_xz[1]);
+  vector<float16_t, 3> vec3_f16 = vector<float16_t, 3>(ubo_load_58_xz[0], ubo_load_58_y, ubo_load_58_xz[1]);
   const uint scalar_offset_66 = (((800u * idx) + 112u)) / 4;
-  const float4 vec4_f32 = asfloat(ub[scalar_offset_66 / 4]);
+  float4 vec4_f32 = asfloat(ub[scalar_offset_66 / 4]);
   const uint scalar_offset_67 = (((800u * idx) + 128u)) / 4;
-  const int4 vec4_i32 = asint(ub[scalar_offset_67 / 4]);
+  int4 vec4_i32 = asint(ub[scalar_offset_67 / 4]);
   const uint scalar_offset_68 = (((800u * idx) + 144u)) / 4;
-  const uint4 vec4_u32 = ub[scalar_offset_68 / 4];
+  uint4 vec4_u32 = ub[scalar_offset_68 / 4];
   const uint scalar_offset_69 = (((800u * idx) + 160u)) / 4;
   uint4 ubo_load_61 = ub[scalar_offset_69 / 4];
   uint2 ubo_load_60 = ((scalar_offset_69 & 2) ? ubo_load_61.zw : ubo_load_61.xy);
   vector<float16_t, 2> ubo_load_60_xz = vector<float16_t, 2>(f16tof32(ubo_load_60 & 0xFFFF));
   vector<float16_t, 2> ubo_load_60_yw = vector<float16_t, 2>(f16tof32(ubo_load_60 >> 16));
-  const vector<float16_t, 4> vec4_f16 = vector<float16_t, 4>(ubo_load_60_xz[0], ubo_load_60_yw[0], ubo_load_60_xz[1], ubo_load_60_yw[1]);
-  const float2x2 mat2x2_f32 = ub_load_16(((800u * idx) + 168u));
-  const float2x3 mat2x3_f32 = ub_load_17(((800u * idx) + 192u));
-  const float2x4 mat2x4_f32 = ub_load_18(((800u * idx) + 224u));
-  const float3x2 mat3x2_f32 = ub_load_19(((800u * idx) + 256u));
-  const float3x3 mat3x3_f32 = ub_load_20(((800u * idx) + 288u));
-  const float3x4 mat3x4_f32 = ub_load_21(((800u * idx) + 336u));
-  const float4x2 mat4x2_f32 = ub_load_22(((800u * idx) + 384u));
-  const float4x3 mat4x3_f32 = ub_load_23(((800u * idx) + 416u));
-  const float4x4 mat4x4_f32 = ub_load_24(((800u * idx) + 480u));
-  const matrix<float16_t, 2, 2> mat2x2_f16 = ub_load_25(((800u * idx) + 544u));
-  const matrix<float16_t, 2, 3> mat2x3_f16 = ub_load_26(((800u * idx) + 552u));
-  const matrix<float16_t, 2, 4> mat2x4_f16 = ub_load_27(((800u * idx) + 568u));
-  const matrix<float16_t, 3, 2> mat3x2_f16 = ub_load_28(((800u * idx) + 584u));
-  const matrix<float16_t, 3, 3> mat3x3_f16 = ub_load_29(((800u * idx) + 600u));
-  const matrix<float16_t, 3, 4> mat3x4_f16 = ub_load_30(((800u * idx) + 624u));
-  const matrix<float16_t, 4, 2> mat4x2_f16 = ub_load_31(((800u * idx) + 648u));
-  const matrix<float16_t, 4, 3> mat4x3_f16 = ub_load_32(((800u * idx) + 664u));
-  const matrix<float16_t, 4, 4> mat4x4_f16 = ub_load_33(((800u * idx) + 696u));
-  const float3 arr2_vec3_f32[2] = ub_load_34(((800u * idx) + 736u));
-  const matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = ub_load_35(((800u * idx) + 768u));
+  vector<float16_t, 4> vec4_f16 = vector<float16_t, 4>(ubo_load_60_xz[0], ubo_load_60_yw[0], ubo_load_60_xz[1], ubo_load_60_yw[1]);
+  float2x2 mat2x2_f32 = ub_load_16(((800u * idx) + 168u));
+  float2x3 mat2x3_f32 = ub_load_17(((800u * idx) + 192u));
+  float2x4 mat2x4_f32 = ub_load_18(((800u * idx) + 224u));
+  float3x2 mat3x2_f32 = ub_load_19(((800u * idx) + 256u));
+  float3x3 mat3x3_f32 = ub_load_20(((800u * idx) + 288u));
+  float3x4 mat3x4_f32 = ub_load_21(((800u * idx) + 336u));
+  float4x2 mat4x2_f32 = ub_load_22(((800u * idx) + 384u));
+  float4x3 mat4x3_f32 = ub_load_23(((800u * idx) + 416u));
+  float4x4 mat4x4_f32 = ub_load_24(((800u * idx) + 480u));
+  matrix<float16_t, 2, 2> mat2x2_f16 = ub_load_25(((800u * idx) + 544u));
+  matrix<float16_t, 2, 3> mat2x3_f16 = ub_load_26(((800u * idx) + 552u));
+  matrix<float16_t, 2, 4> mat2x4_f16 = ub_load_27(((800u * idx) + 568u));
+  matrix<float16_t, 3, 2> mat3x2_f16 = ub_load_28(((800u * idx) + 584u));
+  matrix<float16_t, 3, 3> mat3x3_f16 = ub_load_29(((800u * idx) + 600u));
+  matrix<float16_t, 3, 4> mat3x4_f16 = ub_load_30(((800u * idx) + 624u));
+  matrix<float16_t, 4, 2> mat4x2_f16 = ub_load_31(((800u * idx) + 648u));
+  matrix<float16_t, 4, 3> mat4x3_f16 = ub_load_32(((800u * idx) + 664u));
+  matrix<float16_t, 4, 4> mat4x4_f16 = ub_load_33(((800u * idx) + 696u));
+  float3 arr2_vec3_f32[2] = ub_load_34(((800u * idx) + 736u));
+  matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = ub_load_35(((800u * idx) + 768u));
+  s.Store(0u, asuint((((((((((((((((((((((((((((((((((((tint_ftoi(scalar_f32) + scalar_i32) + int(scalar_u32)) + int(scalar_f16)) + tint_ftoi(vec2_f32.x)) + vec2_i32.x) + int(vec2_u32.x)) + int(vec2_f16.x)) + tint_ftoi(vec3_f32.y)) + vec3_i32.y) + int(vec3_u32.y)) + int(vec3_f16.y)) + tint_ftoi(vec4_f32.z)) + vec4_i32.z) + int(vec4_u32.z)) + int(vec4_f16.z)) + tint_ftoi(mat2x2_f32[0].x)) + tint_ftoi(mat2x3_f32[0].x)) + tint_ftoi(mat2x4_f32[0].x)) + tint_ftoi(mat3x2_f32[0].x)) + tint_ftoi(mat3x3_f32[0].x)) + tint_ftoi(mat3x4_f32[0].x)) + tint_ftoi(mat4x2_f32[0].x)) + tint_ftoi(mat4x3_f32[0].x)) + tint_ftoi(mat4x4_f32[0].x)) + int(mat2x2_f16[0].x)) + int(mat2x3_f16[0].x)) + int(mat2x4_f16[0].x)) + int(mat3x2_f16[0].x)) + int(mat3x3_f16[0].x)) + int(mat3x4_f16[0].x)) + int(mat4x2_f16[0].x)) + int(mat4x3_f16[0].x)) + int(mat4x4_f16[0].x)) + tint_ftoi(arr2_vec3_f32[0].x)) + int(arr2_mat4x2_f16[0][0].x))));
 }
 
 [numthreads(1, 1, 1)]
@@ -320,3 +326,6 @@
   main_inner(tint_symbol.idx);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018416637920(86,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl
index f5eee66..8859a01 100644
--- a/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/dynamic_index/read_f16.wgsl.expected.ir.fxc.hlsl
@@ -299,5 +299,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000181E5C934B0(10,21-29): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023230EBB4E0(10,21-29): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.fxc.hlsl
index 7f77059..853ff75 100644
--- a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.fxc.hlsl
@@ -1,5 +1,9 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 struct Inner {
   int scalar_i32;
   float scalar_f32;
@@ -9,6 +13,7 @@
 cbuffer cbuffer_ub : register(b0) {
   uint4 ub[55];
 };
+RWByteAddressBuffer s : register(u1);
 
 float2x2 ub_load_16(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -254,7 +259,7 @@
   const uint scalar_offset_56 = ((offset + 4u)) / 4;
   const uint scalar_offset_bytes = ((offset + 8u));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const Inner tint_symbol = {asint(ub[scalar_offset_55 / 4][scalar_offset_55 % 4]), asfloat(ub[scalar_offset_56 / 4][scalar_offset_56 % 4]), float16_t(f16tof32(((ub[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)))};
+  Inner tint_symbol = {asint(ub[scalar_offset_55 / 4][scalar_offset_55 % 4]), asfloat(ub[scalar_offset_56 / 4][scalar_offset_56 % 4]), float16_t(f16tof32(((ub[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)))};
   return tint_symbol;
 }
 
@@ -271,50 +276,54 @@
 
 [numthreads(1, 1, 1)]
 void main() {
-  const float scalar_f32 = asfloat(ub[0].x);
-  const int scalar_i32 = asint(ub[0].y);
-  const uint scalar_u32 = ub[0].z;
-  const float16_t scalar_f16 = float16_t(f16tof32(((ub[0].w) & 0xFFFF)));
-  const float2 vec2_f32 = asfloat(ub[1].xy);
-  const int2 vec2_i32 = asint(ub[1].zw);
-  const uint2 vec2_u32 = ub[2].xy;
+  float scalar_f32 = asfloat(ub[0].x);
+  int scalar_i32 = asint(ub[0].y);
+  uint scalar_u32 = ub[0].z;
+  float16_t scalar_f16 = float16_t(f16tof32(((ub[0].w) & 0xFFFF)));
+  float2 vec2_f32 = asfloat(ub[1].xy);
+  int2 vec2_i32 = asint(ub[1].zw);
+  uint2 vec2_u32 = ub[2].xy;
   uint ubo_load_54 = ub[2].z;
-  const vector<float16_t, 2> vec2_f16 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_54 & 0xFFFF)), float16_t(f16tof32(ubo_load_54 >> 16)));
-  const float3 vec3_f32 = asfloat(ub[3].xyz);
-  const int3 vec3_i32 = asint(ub[4].xyz);
-  const uint3 vec3_u32 = ub[5].xyz;
+  vector<float16_t, 2> vec2_f16 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_54 & 0xFFFF)), float16_t(f16tof32(ubo_load_54 >> 16)));
+  float3 vec3_f32 = asfloat(ub[3].xyz);
+  int3 vec3_i32 = asint(ub[4].xyz);
+  uint3 vec3_u32 = ub[5].xyz;
   uint2 ubo_load_55 = ub[6].xy;
   vector<float16_t, 2> ubo_load_55_xz = vector<float16_t, 2>(f16tof32(ubo_load_55 & 0xFFFF));
   float16_t ubo_load_55_y = f16tof32(ubo_load_55[0] >> 16);
-  const vector<float16_t, 3> vec3_f16 = vector<float16_t, 3>(ubo_load_55_xz[0], ubo_load_55_y, ubo_load_55_xz[1]);
-  const float4 vec4_f32 = asfloat(ub[7]);
-  const int4 vec4_i32 = asint(ub[8]);
-  const uint4 vec4_u32 = ub[9];
+  vector<float16_t, 3> vec3_f16 = vector<float16_t, 3>(ubo_load_55_xz[0], ubo_load_55_y, ubo_load_55_xz[1]);
+  float4 vec4_f32 = asfloat(ub[7]);
+  int4 vec4_i32 = asint(ub[8]);
+  uint4 vec4_u32 = ub[9];
   uint2 ubo_load_56 = ub[10].xy;
   vector<float16_t, 2> ubo_load_56_xz = vector<float16_t, 2>(f16tof32(ubo_load_56 & 0xFFFF));
   vector<float16_t, 2> ubo_load_56_yw = vector<float16_t, 2>(f16tof32(ubo_load_56 >> 16));
-  const vector<float16_t, 4> vec4_f16 = vector<float16_t, 4>(ubo_load_56_xz[0], ubo_load_56_yw[0], ubo_load_56_xz[1], ubo_load_56_yw[1]);
-  const float2x2 mat2x2_f32 = ub_load_16(168u);
-  const float2x3 mat2x3_f32 = ub_load_17(192u);
-  const float2x4 mat2x4_f32 = ub_load_18(224u);
-  const float3x2 mat3x2_f32 = ub_load_19(256u);
-  const float3x3 mat3x3_f32 = ub_load_20(288u);
-  const float3x4 mat3x4_f32 = ub_load_21(336u);
-  const float4x2 mat4x2_f32 = ub_load_22(384u);
-  const float4x3 mat4x3_f32 = ub_load_23(416u);
-  const float4x4 mat4x4_f32 = ub_load_24(480u);
-  const matrix<float16_t, 2, 2> mat2x2_f16 = ub_load_25(544u);
-  const matrix<float16_t, 2, 3> mat2x3_f16 = ub_load_26(552u);
-  const matrix<float16_t, 2, 4> mat2x4_f16 = ub_load_27(568u);
-  const matrix<float16_t, 3, 2> mat3x2_f16 = ub_load_28(584u);
-  const matrix<float16_t, 3, 3> mat3x3_f16 = ub_load_29(600u);
-  const matrix<float16_t, 3, 4> mat3x4_f16 = ub_load_30(624u);
-  const matrix<float16_t, 4, 2> mat4x2_f16 = ub_load_31(648u);
-  const matrix<float16_t, 4, 3> mat4x3_f16 = ub_load_32(664u);
-  const matrix<float16_t, 4, 4> mat4x4_f16 = ub_load_33(696u);
-  const float3 arr2_vec3_f32[2] = ub_load_34(736u);
-  const matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = ub_load_35(768u);
-  const Inner struct_inner = ub_load_36(800u);
-  const Inner array_struct_inner[4] = ub_load_37(816u);
+  vector<float16_t, 4> vec4_f16 = vector<float16_t, 4>(ubo_load_56_xz[0], ubo_load_56_yw[0], ubo_load_56_xz[1], ubo_load_56_yw[1]);
+  float2x2 mat2x2_f32 = ub_load_16(168u);
+  float2x3 mat2x3_f32 = ub_load_17(192u);
+  float2x4 mat2x4_f32 = ub_load_18(224u);
+  float3x2 mat3x2_f32 = ub_load_19(256u);
+  float3x3 mat3x3_f32 = ub_load_20(288u);
+  float3x4 mat3x4_f32 = ub_load_21(336u);
+  float4x2 mat4x2_f32 = ub_load_22(384u);
+  float4x3 mat4x3_f32 = ub_load_23(416u);
+  float4x4 mat4x4_f32 = ub_load_24(480u);
+  matrix<float16_t, 2, 2> mat2x2_f16 = ub_load_25(544u);
+  matrix<float16_t, 2, 3> mat2x3_f16 = ub_load_26(552u);
+  matrix<float16_t, 2, 4> mat2x4_f16 = ub_load_27(568u);
+  matrix<float16_t, 3, 2> mat3x2_f16 = ub_load_28(584u);
+  matrix<float16_t, 3, 3> mat3x3_f16 = ub_load_29(600u);
+  matrix<float16_t, 3, 4> mat3x4_f16 = ub_load_30(624u);
+  matrix<float16_t, 4, 2> mat4x2_f16 = ub_load_31(648u);
+  matrix<float16_t, 4, 3> mat4x3_f16 = ub_load_32(664u);
+  matrix<float16_t, 4, 4> mat4x4_f16 = ub_load_33(696u);
+  float3 arr2_vec3_f32[2] = ub_load_34(736u);
+  matrix<float16_t, 4, 2> arr2_mat4x2_f16[2] = ub_load_35(768u);
+  Inner struct_inner = ub_load_36(800u);
+  Inner array_struct_inner[4] = ub_load_37(816u);
+  s.Store(0u, asuint((((((((((((((((((((((((((((((((((((((tint_ftoi(scalar_f32) + scalar_i32) + int(scalar_u32)) + int(scalar_f16)) + tint_ftoi(vec2_f32.x)) + vec2_i32.x) + int(vec2_u32.x)) + int(vec2_f16.x)) + tint_ftoi(vec3_f32.y)) + vec3_i32.y) + int(vec3_u32.y)) + int(vec3_f16.y)) + tint_ftoi(vec4_f32.z)) + vec4_i32.z) + int(vec4_u32.z)) + int(vec4_f16.z)) + tint_ftoi(mat2x2_f32[0].x)) + tint_ftoi(mat2x3_f32[0].x)) + tint_ftoi(mat2x4_f32[0].x)) + tint_ftoi(mat3x2_f32[0].x)) + tint_ftoi(mat3x3_f32[0].x)) + tint_ftoi(mat3x4_f32[0].x)) + tint_ftoi(mat4x2_f32[0].x)) + tint_ftoi(mat4x3_f32[0].x)) + tint_ftoi(mat4x4_f32[0].x)) + int(mat2x2_f16[0].x)) + int(mat2x3_f16[0].x)) + int(mat2x4_f16[0].x)) + int(mat3x2_f16[0].x)) + int(mat3x3_f16[0].x)) + int(mat3x4_f16[0].x)) + int(mat4x2_f16[0].x)) + int(mat4x3_f16[0].x)) + int(mat4x4_f16[0].x)) + tint_ftoi(arr2_vec3_f32[0].x)) + int(arr2_mat4x2_f16[0][0].x)) + struct_inner.scalar_i32) + array_struct_inner[0].scalar_i32)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A47BDDE5C0(8,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.fxc.hlsl
index 1b70cbc..96e0d73 100644
--- a/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/static_index/read_f16.wgsl.expected.ir.fxc.hlsl
@@ -319,5 +319,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023E74836950(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EA3BD44DF0(4,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 57ecbce..801f8a3 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[4];
 };
+RWByteAddressBuffer s : register(u1);
 static int counter = 0;
 
 int i() {
@@ -37,15 +38,21 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_i_save = i();
-  const matrix<float16_t, 2, 3> l_a[4] = a_load(0u);
-  const matrix<float16_t, 2, 3> l_a_i = a_load_1((16u * uint(p_a_i_save)));
+  int p_a_i_save = i();
+  int p_a_i_i_save = i();
+  matrix<float16_t, 2, 3> l_a[4] = a_load(0u);
+  matrix<float16_t, 2, 3> l_a_i = a_load_1((16u * uint(p_a_i_save)));
   const uint scalar_offset_2 = (((16u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save)))) / 4;
   uint4 ubo_load_5 = a[scalar_offset_2 / 4];
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  const uint scalar_offset_bytes = (((16u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save))));
+  const uint scalar_offset_index = scalar_offset_bytes / 4;
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000204157BE940(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 5bf2551..c693b62 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -63,5 +63,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C502844780(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E3C5EB3E50(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index c43d7a1..354ee4f 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[4];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 3> a_load_1(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -31,11 +32,15 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 3> l_a[4] = a_load(0u);
-  const matrix<float16_t, 2, 3> l_a_i = a_load_1(32u);
+  matrix<float16_t, 2, 3> l_a[4] = a_load(0u);
+  matrix<float16_t, 2, 3> l_a_i = a_load_1(32u);
   uint2 ubo_load_4 = a[2].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[2].z) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002801AFB23C0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 2823667..41d5b5e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -54,5 +54,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000207C946FA80(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002610D67CCE0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index f8e6c3e..d865ae4 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 3> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -20,14 +21,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 2> t = transpose(u_load(32u));
+  matrix<float16_t, 3, 2> t = transpose(u_load(32u));
   uint2 ubo_load_4 = u[0].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
+  float16_t l = length(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
   uint2 ubo_load_5 = u[0].zw;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   float16_t ubo_load_5_y = f16tof32(ubo_load_5[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
+  s.Store<float16_t>(0u, ((float16_t(a) + float16_t(l)) + t[0].x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021F54634CB0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 3bb945a..2ecd264 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002064F15EB50(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002890FED5830(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
index 7de93b9..e53f518 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -3,17 +3,22 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 
-void a(matrix<float16_t, 2, 3> a_1[4]) {
+float16_t a(matrix<float16_t, 2, 3> a_1[4]) {
+  return a_1[0][0].x;
 }
 
-void b(matrix<float16_t, 2, 3> m) {
+float16_t b(matrix<float16_t, 2, 3> m) {
+  return m[0].x;
 }
 
-void c(vector<float16_t, 3> v) {
+float16_t c(vector<float16_t, 3> v) {
+  return v.x;
 }
 
-void d(float16_t f_1) {
+float16_t d(float16_t f_1) {
+  return f_1;
 }
 
 matrix<float16_t, 2, 3> u_load_1(uint offset) {
@@ -43,15 +48,19 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  a(u_load(0u));
-  b(u_load_1(16u));
+  float16_t tint_symbol = a(u_load(0u));
+  float16_t tint_symbol_1 = b(u_load_1(16u));
   uint2 ubo_load_4 = u[1].xy;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  c(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
+  float16_t tint_symbol_2 = c(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
   uint2 ubo_load_5 = u[1].xy;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   float16_t ubo_load_5_y = f16tof32(ubo_load_5[0] >> 16);
-  d(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
+  float16_t tint_symbol_3 = d(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
+  s.Store<float16_t>(0u, (((tint_symbol + tint_symbol_1) + tint_symbol_2) + tint_symbol_3));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D1F24EB700(6,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 27ed3b6..3b62121 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -70,5 +70,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A2E13524B0(6,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000207FC344E30(6,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
index b3168b6..2af6dd2 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 static matrix<float16_t, 2, 3> p[4] = (matrix<float16_t, 2, 3>[4])0;
 
 matrix<float16_t, 2, 3> u_load_1(uint offset) {
@@ -39,5 +40,9 @@
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
   p[1][0] = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy;
   p[1][0].x = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
+  s.Store<float16_t>(0u, p[1][0].x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000275C9EBAB10(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index c2e02a1..f9b2ada 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AE31B4E6D0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026300AA9860(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 5c2c800..a322a33 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -55,3 +55,7 @@
   s.Store<float16_t>(16u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023090873CB0(6,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023090873CB0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index c4e8ab0..1124868 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -77,5 +77,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C86DCF10E0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000279EBBD4900(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 992d459..a66b84d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,21 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 2, 3> w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      w[i] = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
-groupshared matrix<float16_t, 2, 3> w[4];
+RWByteAddressBuffer s : register(u1);
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -35,13 +47,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      w[i] = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(32u);
   uint2 ubo_load_4 = u[0].zw;
@@ -49,6 +55,7 @@
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
   w[1][0] = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy;
   w[1][0].x = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
+  s.Store<float16_t>(0u, w[1][0].x);
 }
 
 [numthreads(1, 1, 1)]
@@ -56,3 +63,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001889D974ED0(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 519eb4d..dde5890 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -80,5 +80,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ECB8DFF4B0(10,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022449C39600(10,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index ecdefb5..c38c7af 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[4];
 };
+RWByteAddressBuffer s : register(u1);
 static int counter = 0;
 
 int i() {
@@ -37,15 +38,21 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_i_save = i();
-  const matrix<float16_t, 2, 4> l_a[4] = a_load(0u);
-  const matrix<float16_t, 2, 4> l_a_i = a_load_1((16u * uint(p_a_i_save)));
+  int p_a_i_save = i();
+  int p_a_i_i_save = i();
+  matrix<float16_t, 2, 4> l_a[4] = a_load(0u);
+  matrix<float16_t, 2, 4> l_a_i = a_load_1((16u * uint(p_a_i_save)));
   const uint scalar_offset_2 = (((16u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save)))) / 4;
   uint4 ubo_load_5 = a[scalar_offset_2 / 4];
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  const uint scalar_offset_bytes = (((16u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save))));
+  const uint scalar_offset_index = scalar_offset_bytes / 4;
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001729296B4E0(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 918785f..e310704 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -63,5 +63,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D9E332970(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000239941CCD20(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 541caea..3fb38d7 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[4];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 4> a_load_1(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -31,11 +32,15 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 4> l_a[4] = a_load(0u);
-  const matrix<float16_t, 2, 4> l_a_i = a_load_1(32u);
+  matrix<float16_t, 2, 4> l_a[4] = a_load(0u);
+  matrix<float16_t, 2, 4> l_a_i = a_load_1(32u);
   uint2 ubo_load_4 = a[2].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[2].z) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026E0E10A780(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index e0e7a93..1768719 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -54,5 +54,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002AD04042B90(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028071C44D30(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index c95d405..19afe8d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 4> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -20,14 +21,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 2> t = transpose(u_load(32u));
+  matrix<float16_t, 4, 2> t = transpose(u_load(32u));
   uint2 ubo_load_4 = u[0].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
+  float16_t l = length(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
   uint2 ubo_load_5 = u[0].zw;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   vector<float16_t, 2> ubo_load_5_yw = vector<float16_t, 2>(f16tof32(ubo_load_5 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
+  s.Store<float16_t>(0u, ((t[0].x + float16_t(l)) + float16_t(a)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023EC217DD40(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 0d10f4a..ba4f4b0 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C472FF2840(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014AAAACD4F0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
index ef5acb3..c473cae 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -3,17 +3,22 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 
-void a(matrix<float16_t, 2, 4> a_1[4]) {
+float16_t a(matrix<float16_t, 2, 4> a_1[4]) {
+  return a_1[0][0].x;
 }
 
-void b(matrix<float16_t, 2, 4> m) {
+float16_t b(matrix<float16_t, 2, 4> m) {
+  return m[0].x;
 }
 
-void c(vector<float16_t, 4> v) {
+float16_t c(vector<float16_t, 4> v) {
+  return v.x;
 }
 
-void d(float16_t f_1) {
+float16_t d(float16_t f_1) {
+  return f_1;
 }
 
 matrix<float16_t, 2, 4> u_load_1(uint offset) {
@@ -43,15 +48,19 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  a(u_load(0u));
-  b(u_load_1(16u));
+  float16_t tint_symbol = a(u_load(0u));
+  float16_t tint_symbol_1 = b(u_load_1(16u));
   uint2 ubo_load_4 = u[1].xy;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  c(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
+  float16_t tint_symbol_2 = c(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
   uint2 ubo_load_5 = u[1].xy;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   vector<float16_t, 2> ubo_load_5_yw = vector<float16_t, 2>(f16tof32(ubo_load_5 >> 16));
-  d(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
+  float16_t tint_symbol_3 = d(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
+  s.Store<float16_t>(0u, (((tint_symbol + tint_symbol_1) + tint_symbol_2) + tint_symbol_3));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002040ABD3CD0(6,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 2ff73f1..0e83d61 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -70,5 +70,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002740EAEE710(6,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001DFA8A28F80(6,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
index ca3046c..71f70cb 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 static matrix<float16_t, 2, 4> p[4] = (matrix<float16_t, 2, 4>[4])0;
 
 matrix<float16_t, 2, 4> u_load_1(uint offset) {
@@ -39,5 +40,9 @@
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
   p[1][0] = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz;
   p[1][0].x = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
+  s.Store<float16_t>(0u, p[1][0].x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A382D2E830(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 97aeba2..f1c392a 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D5489CF7C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024FB488CF60(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
index 31c7a80..075bb55 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -55,3 +55,7 @@
   s.Store<float16_t>(16u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001649BA46310(6,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001649BA46310(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index b7f22ae..b6b2c72 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -77,5 +77,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019DCA7EE2F0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B03FCF97C0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 2b4d8af..a705dcc 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,20 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 2, 4> w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      w[i] = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
-groupshared matrix<float16_t, 2, 4> w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -35,13 +46,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      w[i] = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(32u);
   uint2 ubo_load_4 = u[0].zw;
@@ -56,3 +61,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020409489280(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 837b044..2342b57 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -78,5 +78,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028CE26E6580(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E1BE935C00(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 0af6a5f..95beacc 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[4];
 };
+RWByteAddressBuffer s : register(u1);
 static int counter = 0;
 
 int i() {
@@ -35,12 +36,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_i_save = i();
-  const matrix<float16_t, 4, 2> l_a[4] = a_load(0u);
-  const matrix<float16_t, 4, 2> l_a_i = a_load_1((16u * uint(p_a_i_save)));
+  int p_a_i_save = i();
+  int p_a_i_i_save = i();
+  matrix<float16_t, 4, 2> l_a[4] = a_load(0u);
+  matrix<float16_t, 4, 2> l_a_i = a_load_1((16u * uint(p_a_i_save)));
   const uint scalar_offset_4 = (((16u * uint(p_a_i_save)) + (4u * uint(p_a_i_i_save)))) / 4;
   uint ubo_load_4 = a[scalar_offset_4 / 4][scalar_offset_4 % 4];
-  const vector<float16_t, 2> l_a_i_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  vector<float16_t, 2> l_a_i_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  const uint scalar_offset_bytes = (((16u * uint(p_a_i_save)) + (4u * uint(p_a_i_i_save))));
+  const uint scalar_offset_index = scalar_offset_bytes / 4;
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000207B04ABE10(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 695cd08..5ea48b9 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -66,5 +66,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001893CEC1FC0(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002460CA0C110(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 0d43239..7b7c77e 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[4];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 2> a_load_1(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -29,9 +30,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 2> l_a[4] = a_load(0u);
-  const matrix<float16_t, 4, 2> l_a_i = a_load_1(32u);
+  matrix<float16_t, 4, 2> l_a[4] = a_load(0u);
+  matrix<float16_t, 4, 2> l_a_i = a_load_1(32u);
   uint ubo_load_4 = a[2].y;
-  const vector<float16_t, 2> l_a_i_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  vector<float16_t, 2> l_a_i_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[2].y) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C2794663C0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index c2b8e91..e5bdc68 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029219B7EC90(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020AD74EB730(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index 1a1deb9..fb7e00a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 2> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -18,10 +19,14 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 4> t = transpose(u_load(32u));
+  matrix<float16_t, 2, 4> t = transpose(u_load(32u));
   uint ubo_load_4 = u[0].y;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
   uint ubo_load_5 = u[0].y;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
+  s.Store<float16_t>(0u, ((t[0].x + float16_t(l)) + float16_t(a)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028BBEB154D0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index a8f8647..4995ad3 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025C84E75040(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BA13A48F80(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
index c9bf52f..49a0977 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -3,17 +3,22 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 
-void a(matrix<float16_t, 4, 2> a_1[4]) {
+float16_t a(matrix<float16_t, 4, 2> a_1[4]) {
+  return a_1[0][0].x;
 }
 
-void b(matrix<float16_t, 4, 2> m) {
+float16_t b(matrix<float16_t, 4, 2> m) {
+  return m[0].x;
 }
 
-void c(vector<float16_t, 2> v) {
+float16_t c(vector<float16_t, 2> v) {
+  return v.x;
 }
 
-void d(float16_t f_1) {
+float16_t d(float16_t f_1) {
+  return f_1;
 }
 
 matrix<float16_t, 4, 2> u_load_1(uint offset) {
@@ -41,11 +46,15 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  a(u_load(0u));
-  b(u_load_1(16u));
+  float16_t tint_symbol = a(u_load(0u));
+  float16_t tint_symbol_1 = b(u_load_1(16u));
   uint ubo_load_4 = u[1].x;
-  c(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
+  float16_t tint_symbol_2 = c(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
   uint ubo_load_5 = u[1].x;
-  d(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
+  float16_t tint_symbol_3 = d(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
+  s.Store<float16_t>(0u, (((tint_symbol + tint_symbol_1) + tint_symbol_2) + tint_symbol_3));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023FE2B954E0(6,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 9663e5f..444ad27 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -72,5 +72,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000169F7697330(6,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FA99CE4880(6,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
index bd1bbae..b53b37b 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
+RWByteAddressBuffer s : register(u1);
 static matrix<float16_t, 4, 2> p[4] = (matrix<float16_t, 4, 2>[4])0;
 
 matrix<float16_t, 4, 2> u_load_1(uint offset) {
@@ -35,5 +36,9 @@
   uint ubo_load_4 = u[0].y;
   p[1][0] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx;
   p[1][0].x = float16_t(f16tof32(((u[0].y) & 0xFFFF)));
+  s.Store<float16_t>(0u, p[1][0].x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025909CD3FF0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 7b36df4..e5e0788 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -58,5 +58,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FF3644E2E0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000236ACC5C7E0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
index 0109e9e..e981f8c 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -53,3 +53,7 @@
   s.Store<float16_t>(16u, float16_t(f16tof32(((u[0].y) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000293ADCFCFE0(6,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000293ADCFCFE0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index f4d655a..31413c1 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -81,5 +81,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C2A06CE760(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A37CA35860(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 0e49992..84c8264 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,20 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 4, 2> w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      w[i] = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[4];
 };
-groupshared matrix<float16_t, 4, 2> w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -33,13 +44,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      w[i] = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(32u);
   uint ubo_load_4 = u[0].y;
@@ -52,3 +57,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014105293960(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index a1fb622..98ff165 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -80,5 +80,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000219512F00F0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EEE26C4FB0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 80a0806..86ceb87 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[8];
 };
+RWByteAddressBuffer s : register(u1);
 static int counter = 0;
 
 int i() {
@@ -47,15 +48,21 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_i_save = i();
-  const matrix<float16_t, 4, 3> l_a[4] = a_load(0u);
-  const matrix<float16_t, 4, 3> l_a_i = a_load_1((32u * uint(p_a_i_save)));
+  int p_a_i_save = i();
+  int p_a_i_i_save = i();
+  matrix<float16_t, 4, 3> l_a[4] = a_load(0u);
+  matrix<float16_t, 4, 3> l_a_i = a_load_1((32u * uint(p_a_i_save)));
   const uint scalar_offset_4 = (((32u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save)))) / 4;
   uint4 ubo_load_9 = a[scalar_offset_4 / 4];
   uint2 ubo_load_8 = ((scalar_offset_4 & 2) ? ubo_load_9.zw : ubo_load_9.xy);
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  const uint scalar_offset_bytes = (((32u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save))));
+  const uint scalar_offset_index = scalar_offset_bytes / 4;
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A335236120(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 2978e70..69917e4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -65,5 +65,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F59245E4C0(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE74804CB0(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 76f8bf7..54b4932 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[8];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 3> a_load_1(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -41,11 +42,15 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 3> l_a[4] = a_load(0u);
-  const matrix<float16_t, 4, 3> l_a_i = a_load_1(64u);
+  matrix<float16_t, 4, 3> l_a[4] = a_load(0u);
+  matrix<float16_t, 4, 3> l_a_i = a_load_1(64u);
   uint2 ubo_load_8 = a[4].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  vector<float16_t, 3> l_a_i_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[4].z) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AFDE759D40(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 94c0b61..2cf67f2 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BD8DCC3880(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002304631A630(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index 3611c50..c98f8a4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 3> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -30,14 +31,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 4> t = transpose(u_load(64u));
+  matrix<float16_t, 3, 4> t = transpose(u_load(64u));
   uint2 ubo_load_8 = u[0].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
+  float16_t l = length(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
   uint2 ubo_load_9 = u[0].zw;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   float16_t ubo_load_9_y = f16tof32(ubo_load_9[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
+  s.Store<float16_t>(0u, ((t[0].x + float16_t(l)) + float16_t(a)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000208C8DD4C10(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 141e99c..9ae49c3 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000276BF2A2560(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026F5F0FC970(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
index be7c258..d591613 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -3,17 +3,22 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
+RWByteAddressBuffer s : register(u1);
 
-void a(matrix<float16_t, 4, 3> a_1[4]) {
+float16_t a(matrix<float16_t, 4, 3> a_1[4]) {
+  return a_1[0][0].x;
 }
 
-void b(matrix<float16_t, 4, 3> m) {
+float16_t b(matrix<float16_t, 4, 3> m) {
+  return m[0].x;
 }
 
-void c(vector<float16_t, 3> v) {
+float16_t c(vector<float16_t, 3> v) {
+  return v.x;
 }
 
-void d(float16_t f_1) {
+float16_t d(float16_t f_1) {
+  return f_1;
 }
 
 matrix<float16_t, 4, 3> u_load_1(uint offset) {
@@ -53,15 +58,19 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  a(u_load(0u));
-  b(u_load_1(32u));
+  float16_t tint_symbol = a(u_load(0u));
+  float16_t tint_symbol_1 = b(u_load_1(32u));
   uint2 ubo_load_8 = u[2].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  c(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
+  float16_t tint_symbol_2 = c(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
   uint2 ubo_load_9 = u[2].xy;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   float16_t ubo_load_9_y = f16tof32(ubo_load_9[0] >> 16);
-  d(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
+  float16_t tint_symbol_3 = d(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
+  s.Store<float16_t>(0u, (((tint_symbol + tint_symbol_1) + tint_symbol_2) + tint_symbol_3));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001798BD77F80(6,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 505e822..6fc9479 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -72,5 +72,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C1493B2F60(6,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022E264B7350(6,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
index 04f31ed..d276fd4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
+RWByteAddressBuffer s : register(u1);
 static matrix<float16_t, 4, 3> p[4] = (matrix<float16_t, 4, 3>[4])0;
 
 matrix<float16_t, 4, 3> u_load_1(uint offset) {
@@ -49,5 +50,9 @@
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
   p[1][0] = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy;
   p[1][0].x = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
+  s.Store<float16_t>(0u, p[1][0].x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002194B0E4CC0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 199426f..6132a3a 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -58,5 +58,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000257381FE330(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EF04C14900(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 7aa49a0..a913706 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -67,3 +67,7 @@
   s.Store<float16_t>(32u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000244494E5620(6,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000244494E5620(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 4b96dc8..3402fe2 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -81,5 +81,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001801117E680(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BB13E154A0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 05f40db..6e3a2a5 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,20 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 4, 3> w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      w[i] = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
-groupshared matrix<float16_t, 4, 3> w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -45,13 +56,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      w[i] = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(64u);
   uint2 ubo_load_8 = u[0].zw;
@@ -66,3 +71,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000176D797A830(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 6d62f65..27eda0c 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -80,5 +80,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C395A33820(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ADC073F030(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index f77a129..5373c54 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[8];
 };
+RWByteAddressBuffer s : register(u1);
 static int counter = 0;
 
 int i() {
@@ -47,15 +48,21 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_i_save = i();
-  const matrix<float16_t, 4, 4> l_a[4] = a_load(0u);
-  const matrix<float16_t, 4, 4> l_a_i = a_load_1((32u * uint(p_a_i_save)));
+  int p_a_i_save = i();
+  int p_a_i_i_save = i();
+  matrix<float16_t, 4, 4> l_a[4] = a_load(0u);
+  matrix<float16_t, 4, 4> l_a_i = a_load_1((32u * uint(p_a_i_save)));
   const uint scalar_offset_4 = (((32u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save)))) / 4;
   uint4 ubo_load_9 = a[scalar_offset_4 / 4];
   uint2 ubo_load_8 = ((scalar_offset_4 & 2) ? ubo_load_9.zw : ubo_load_9.xy);
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  const uint scalar_offset_bytes = (((32u * uint(p_a_i_save)) + (8u * uint(p_a_i_i_save))));
+  const uint scalar_offset_index = scalar_offset_bytes / 4;
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000240CE37B730(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 3681671..67fbbb5 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -65,5 +65,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C8C80246C0(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000013D93274D60(12,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index d63c358..176a315 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_a : register(b0) {
   uint4 a[8];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 4> a_load_1(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -41,11 +42,15 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 4> l_a[4] = a_load(0u);
-  const matrix<float16_t, 4, 4> l_a_i = a_load_1(64u);
+  matrix<float16_t, 4, 4> l_a[4] = a_load(0u);
+  matrix<float16_t, 4, 4> l_a_i = a_load_1(64u);
   uint2 ubo_load_8 = a[4].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  vector<float16_t, 4> l_a_i_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  s.Store<float16_t>(0u, (((float16_t(f16tof32(((a[4].z) & 0xFFFF))) + l_a[0][0].x) + l_a_i[0].x) + l_a_i_i.x));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021031015270(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 300c01e..978d1a9 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AF36796480(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025172168FE0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index a61c3eb..20d8676 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 4> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -30,14 +31,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 4> t = transpose(u_load(64u));
+  matrix<float16_t, 4, 4> t = transpose(u_load(64u));
   uint2 ubo_load_8 = u[0].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
+  float16_t l = length(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
   uint2 ubo_load_9 = u[0].zw;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   vector<float16_t, 2> ubo_load_9_yw = vector<float16_t, 2>(f16tof32(ubo_load_9 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
+  s.Store<float16_t>(0u, ((t[0].x + float16_t(l)) + float16_t(a)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019CB46C9D20(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 2490c5e..2d29551 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026A5E4EEBB0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021A52F964E0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
index 93e18df..33ae83f 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -3,17 +3,22 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
+RWByteAddressBuffer s : register(u1);
 
-void a(matrix<float16_t, 4, 4> a_1[4]) {
+float16_t a(matrix<float16_t, 4, 4> a_1[4]) {
+  return a_1[0][0].x;
 }
 
-void b(matrix<float16_t, 4, 4> m) {
+float16_t b(matrix<float16_t, 4, 4> m) {
+  return m[0].x;
 }
 
-void c(vector<float16_t, 4> v) {
+float16_t c(vector<float16_t, 4> v) {
+  return v.x;
 }
 
-void d(float16_t f_1) {
+float16_t d(float16_t f_1) {
+  return f_1;
 }
 
 matrix<float16_t, 4, 4> u_load_1(uint offset) {
@@ -53,15 +58,19 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  a(u_load(0u));
-  b(u_load_1(32u));
+  float16_t tint_symbol = a(u_load(0u));
+  float16_t tint_symbol_1 = b(u_load_1(32u));
   uint2 ubo_load_8 = u[2].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  c(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
+  float16_t tint_symbol_2 = c(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
   uint2 ubo_load_9 = u[2].xy;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   vector<float16_t, 2> ubo_load_9_yw = vector<float16_t, 2>(f16tof32(ubo_load_9 >> 16));
-  d(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
+  float16_t tint_symbol_3 = d(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
+  s.Store<float16_t>(0u, (((tint_symbol + tint_symbol_1) + tint_symbol_2) + tint_symbol_3));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023FB43E9F80(6,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 963edea..227ea0f 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -72,5 +72,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FC1F2CF920(6,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000175F235BC30(6,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
index a993e7f..14f23a2 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
+RWByteAddressBuffer s : register(u1);
 static matrix<float16_t, 4, 4> p[4] = (matrix<float16_t, 4, 4>[4])0;
 
 matrix<float16_t, 4, 4> u_load_1(uint offset) {
@@ -49,5 +50,9 @@
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
   p[1][0] = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz;
   p[1][0].x = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
+  s.Store<float16_t>(0u, p[1][0].x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B3355E9080(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 5c7564e..0387a40 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -58,5 +58,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002834174FB30(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F157845590(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
index 6f1938f..f3fbafe 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -67,3 +67,7 @@
   s.Store<float16_t>(32u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000219A244E320(6,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000219A244E320(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 452dada..f4c253c 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -81,5 +81,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000280FEF06460(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002163D8D3E20(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 2574346..81017af 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,20 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 4, 4> w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      w[i] = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[8];
 };
-groupshared matrix<float16_t, 4, 4> w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -45,13 +56,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      w[i] = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(64u);
   uint2 ubo_load_8 = u[0].zw;
@@ -66,3 +71,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000156C7F8C2B0(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 2c9822c..adcaf0d 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -80,5 +80,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024956932BC0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000283D5A58870(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 965b25a..d015670 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -42,7 +42,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -59,23 +59,26 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 2, 2> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 2, 2> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_2 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (4u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint ubo_load_2 = a[scalar_offset_2 / 4][scalar_offset_2 % 4];
-  const vector<float16_t, 2> l_a_i_a_i_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 2> l_a_i_a_i_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (4u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ED9D0AAB90(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 1efa54f..9d9edf0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,31 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :42:24 error: binary: %29 is not in scope
-    %28:u32 = add %27, %29
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:63:5 note: %29 declared here
-    %29:u32 = mul %51, 2u
-    ^^^^^^^
-
-:50:24 error: binary: %29 is not in scope
-    %39:u32 = add %38, %29
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:63:5 note: %29 declared here
-    %29:u32 = mul %51, 2u
-    ^^^^^^^
-
-:63:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :60:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -84,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %29:u32 = mul %51, 2u
+    %48:u32 = mul %47, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -132,146 +108,143 @@
     %23:array<Inner, 4> = call %24, %10
     %l_a_i_a:array<Inner, 4> = let %23
     %26:u32 = add %10, %13
-    %27:u32 = add %26, %16
-    %28:u32 = add %27, %29
-    %30:Inner = call %31, %28
-    %l_a_i_a_i:Inner = let %30
-    %33:u32 = add %10, %13
-    %34:mat2x2<f16> = call %35, %33
-    %l_a_i_a_i_m:mat2x2<f16> = let %34
-    %37:u32 = add %10, %13
-    %38:u32 = add %37, %16
-    %39:u32 = add %38, %29
-    %40:u32 = div %39, 16u
-    %41:ptr<uniform, vec4<u32>, read> = access %a, %40
-    %42:u32 = mod %39, 16u
-    %43:u32 = div %42, 4u
-    %44:vec4<u32> = load %41
-    %45:u32 = swizzle %44, z
-    %46:u32 = swizzle %44, x
-    %47:bool = eq %43, 2u
-    %48:u32 = hlsl.ternary %46, %45, %47
-    %49:vec2<f16> = bitcast %48
-    %l_a_i_a_i_m_i:vec2<f16> = let %49
-    %51:i32 = call %i
-    %29:u32 = mul %51, 2u
-    %52:u32 = add %10, %13
-    %53:u32 = add %52, %16
-    %54:u32 = add %53, %29
-    %55:u32 = div %54, 16u
-    %56:ptr<uniform, vec4<u32>, read> = access %a, %55
-    %57:u32 = mod %54, 16u
-    %58:u32 = div %57, 4u
-    %59:u32 = load_vector_element %56, %58
-    %60:u32 = mod %54, 4u
-    %61:bool = eq %60, 0u
-    %62:u32 = hlsl.ternary 16u, 0u, %61
-    %63:u32 = shr %59, %62
-    %64:f32 = hlsl.f16tof32 %63
-    %65:f16 = convert %64
-    %l_a_i_a_i_m_i_i:f16 = let %65
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat2x2<f16> = call %32, %30
+    %l_a_i_a_i_m:mat2x2<f16> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:u32 = mod %35, 16u
+    %39:u32 = div %38, 4u
+    %40:vec4<u32> = load %37
+    %41:u32 = swizzle %40, z
+    %42:u32 = swizzle %40, x
+    %43:bool = eq %39, 2u
+    %44:u32 = hlsl.ternary %42, %41, %43
+    %45:vec2<f16> = bitcast %44
+    %l_a_i_a_i_m_i:vec2<f16> = let %45
+    %47:i32 = call %i
+    %48:u32 = mul %47, 2u
+    %49:u32 = add %10, %13
+    %50:u32 = add %49, %16
+    %51:u32 = add %50, %48
+    %52:u32 = div %51, 16u
+    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
+    %54:u32 = mod %51, 16u
+    %55:u32 = div %54, 4u
+    %56:u32 = load_vector_element %53, %55
+    %57:u32 = mod %51, 4u
+    %58:bool = eq %57, 0u
+    %59:u32 = hlsl.ternary 16u, 0u, %58
+    %60:u32 = shr %56, %59
+    %61:f32 = hlsl.f16tof32 %60
+    %62:f16 = convert %61
+    %l_a_i_a_i_m_i_i:f16 = let %62
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%32 = func(%start_byte_offset:u32):mat2x2<f16> {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x2<f16>(vec2<f16>(0.0h))))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
-      }
-      $B6 (%idx:u32): {  # body
-        %70:bool = gte %idx, 4u
-        if %70 [t: $B8] {  # if_1
-          $B8: {  # true
-            exit_loop  # loop_1
-          }
-        }
-        %71:u32 = mul %idx, 256u
-        %72:u32 = add %start_byte_offset, %71
-        %73:ptr<function, Outer, read_write> = access %a_1, %idx
-        %74:Outer = call %21, %72
-        store %73, %74
-        continue  # -> $B7
-      }
-      $B7: {  # continuing
-        %75:u32 = add %idx, 1u
-        next_iteration %75  # -> $B6
-      }
-    }
-    %76:array<Outer, 4> = load %a_1
-    ret %76
+    %65:u32 = div %start_byte_offset, 16u
+    %66:ptr<uniform, vec4<u32>, read> = access %a, %65
+    %67:u32 = mod %start_byte_offset, 16u
+    %68:u32 = div %67, 4u
+    %69:vec4<u32> = load %66
+    %70:u32 = swizzle %69, z
+    %71:u32 = swizzle %69, x
+    %72:bool = eq %68, 2u
+    %73:u32 = hlsl.ternary %71, %70, %72
+    %74:vec2<f16> = bitcast %73
+    %75:u32 = add 4u, %start_byte_offset
+    %76:u32 = div %75, 16u
+    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
+    %78:u32 = mod %75, 16u
+    %79:u32 = div %78, 4u
+    %80:vec4<u32> = load %77
+    %81:u32 = swizzle %80, z
+    %82:u32 = swizzle %80, x
+    %83:bool = eq %79, 2u
+    %84:u32 = hlsl.ternary %82, %81, %83
+    %85:vec2<f16> = bitcast %84
+    %86:mat2x2<f16> = construct %74, %85
+    ret %86
   }
 }
-%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %78:array<Inner, 4> = call %24, %start_byte_offset_1
-    %79:Outer = construct %78
-    ret %79
-  }
-}
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f16>(vec2<f16>(0.0h))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
-      }
-      $B12 (%idx_1:u32): {  # body
-        %83:bool = gte %idx_1, 4u
-        if %83 [t: $B14] {  # if_2
-          $B14: {  # true
-            exit_loop  # loop_2
-          }
-        }
-        %84:u32 = mul %idx_1, 64u
-        %85:u32 = add %start_byte_offset_2, %84
-        %86:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %87:Inner = call %31, %85
-        store %86, %87
-        continue  # -> $B13
-      }
-      $B13: {  # continuing
-        %88:u32 = add %idx_1, 1u
-        next_iteration %88  # -> $B12
-      }
-    }
-    %89:array<Inner, 4> = load %a_2
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %88:mat2x2<f16> = call %32, %start_byte_offset_1
+    %89:Inner = construct %88
     ret %89
   }
 }
-%31 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %91:mat2x2<f16> = call %35, %start_byte_offset_3
-    %92:Inner = construct %91
-    ret %92
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B6: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
+      }
+      $B8 (%idx:u32): {  # body
+        %93:bool = gte %idx, 4u
+        if %93 [t: $B10] {  # if_1
+          $B10: {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %94:u32 = mul %idx, 64u
+        %95:u32 = add %start_byte_offset_2, %94
+        %96:ptr<function, Inner, read_write> = access %a_1, %idx
+        %97:Inner = call %28, %95
+        store %96, %97
+        continue  # -> $B9
+      }
+      $B9: {  # continuing
+        %98:u32 = add %idx, 1u
+        next_iteration %98  # -> $B8
+      }
+    }
+    %99:array<Inner, 4> = load %a_1
+    ret %99
   }
 }
-%35 = func(%start_byte_offset_4:u32):mat2x2<f16> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %94:u32 = div %start_byte_offset_4, 16u
-    %95:ptr<uniform, vec4<u32>, read> = access %a, %94
-    %96:u32 = mod %start_byte_offset_4, 16u
-    %97:u32 = div %96, 4u
-    %98:vec4<u32> = load %95
-    %99:u32 = swizzle %98, z
-    %100:u32 = swizzle %98, x
-    %101:bool = eq %97, 2u
-    %102:u32 = hlsl.ternary %100, %99, %101
-    %103:vec2<f16> = bitcast %102
-    %104:u32 = add 4u, %start_byte_offset_4
-    %105:u32 = div %104, 16u
-    %106:ptr<uniform, vec4<u32>, read> = access %a, %105
-    %107:u32 = mod %104, 16u
-    %108:u32 = div %107, 4u
-    %109:vec4<u32> = load %106
-    %110:u32 = swizzle %109, z
-    %111:u32 = swizzle %109, x
-    %112:bool = eq %108, 2u
-    %113:u32 = hlsl.ternary %111, %110, %112
-    %114:vec2<f16> = bitcast %113
-    %115:mat2x2<f16> = construct %103, %114
-    ret %115
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %101:array<Inner, 4> = call %24, %start_byte_offset_3
+    %102:Outer = construct %101
+    ret %102
+  }
+}
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x2<f16>(vec2<f16>(0.0h))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
+      }
+      $B14 (%idx_1:u32): {  # body
+        %106:bool = gte %idx_1, 4u
+        if %106 [t: $B16] {  # if_2
+          $B16: {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %107:u32 = mul %idx_1, 256u
+        %108:u32 = add %start_byte_offset_4, %107
+        %109:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %110:Outer = call %21, %108
+        store %109, %110
+        continue  # -> $B15
+      }
+      $B15: {  # continuing
+        %111:u32 = add %idx_1, 1u
+        next_iteration %111  # -> $B14
+      }
+    }
+    %112:array<Outer, 4> = load %a_2
+    ret %112
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index dc1ee64..9d9edf0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -146,67 +146,67 @@
     ret
   }
 }
-%24 = func(%start_byte_offset:u32):array<Inner, 4> {
+%32 = func(%start_byte_offset:u32):mat2x2<f16> {
   $B4: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
-      }
-      $B6 (%idx:u32): {  # body
-        %67:bool = gte %idx, 4u
-        if %67 [t: $B8] {  # if_1
-          $B8: {  # true
-            exit_loop  # loop_1
-          }
-        }
-        %68:u32 = mul %idx, 64u
-        %69:u32 = add %start_byte_offset, %68
-        %70:ptr<function, Inner, read_write> = access %a_1, %idx
-        %71:Inner = call %28, %69
-        store %70, %71
-        continue  # -> $B7
-      }
-      $B7: {  # continuing
-        %72:u32 = add %idx, 1u
-        next_iteration %72  # -> $B6
-      }
-    }
-    %73:array<Inner, 4> = load %a_1
-    ret %73
+    %65:u32 = div %start_byte_offset, 16u
+    %66:ptr<uniform, vec4<u32>, read> = access %a, %65
+    %67:u32 = mod %start_byte_offset, 16u
+    %68:u32 = div %67, 4u
+    %69:vec4<u32> = load %66
+    %70:u32 = swizzle %69, z
+    %71:u32 = swizzle %69, x
+    %72:bool = eq %68, 2u
+    %73:u32 = hlsl.ternary %71, %70, %72
+    %74:vec2<f16> = bitcast %73
+    %75:u32 = add 4u, %start_byte_offset
+    %76:u32 = div %75, 16u
+    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
+    %78:u32 = mod %75, 16u
+    %79:u32 = div %78, 4u
+    %80:vec4<u32> = load %77
+    %81:u32 = swizzle %80, z
+    %82:u32 = swizzle %80, x
+    %83:bool = eq %79, 2u
+    %84:u32 = hlsl.ternary %82, %81, %83
+    %85:vec2<f16> = bitcast %84
+    %86:mat2x2<f16> = construct %74, %85
+    ret %86
   }
 }
 %28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %75:mat2x2<f16> = call %32, %start_byte_offset_1
-    %76:Inner = construct %75
-    ret %76
+  $B5: {
+    %88:mat2x2<f16> = call %32, %start_byte_offset_1
+    %89:Inner = construct %88
+    ret %89
   }
 }
-%32 = func(%start_byte_offset_2:u32):mat2x2<f16> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %78:u32 = div %start_byte_offset_2, 16u
-    %79:ptr<uniform, vec4<u32>, read> = access %a, %78
-    %80:u32 = mod %start_byte_offset_2, 16u
-    %81:u32 = div %80, 4u
-    %82:vec4<u32> = load %79
-    %83:u32 = swizzle %82, z
-    %84:u32 = swizzle %82, x
-    %85:bool = eq %81, 2u
-    %86:u32 = hlsl.ternary %84, %83, %85
-    %87:vec2<f16> = bitcast %86
-    %88:u32 = add 4u, %start_byte_offset_2
-    %89:u32 = div %88, 16u
-    %90:ptr<uniform, vec4<u32>, read> = access %a, %89
-    %91:u32 = mod %88, 16u
-    %92:u32 = div %91, 4u
-    %93:vec4<u32> = load %90
-    %94:u32 = swizzle %93, z
-    %95:u32 = swizzle %93, x
-    %96:bool = eq %92, 2u
-    %97:u32 = hlsl.ternary %95, %94, %96
-    %98:vec2<f16> = bitcast %97
-    %99:mat2x2<f16> = construct %87, %98
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B6: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
+      }
+      $B8 (%idx:u32): {  # body
+        %93:bool = gte %idx, 4u
+        if %93 [t: $B10] {  # if_1
+          $B10: {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %94:u32 = mul %idx, 64u
+        %95:u32 = add %start_byte_offset_2, %94
+        %96:ptr<function, Inner, read_write> = access %a_1, %idx
+        %97:Inner = call %28, %95
+        store %96, %97
+        continue  # -> $B9
+      }
+      $B9: {  # continuing
+        %98:u32 = add %idx, 1u
+        next_iteration %98  # -> $B8
+      }
+    }
+    %99:array<Inner, 4> = load %a_1
     ret %99
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index e51494c..8d8b3a9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -20,7 +20,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -36,7 +36,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -53,13 +53,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 2, 2> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 2, 2> l_a_3_a_2_m = a_load_4(896u);
   uint ubo_load_2 = a[56].y;
-  const vector<float16_t, 2> l_a_3_a_2_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].y) & 0xFFFF)));
+  vector<float16_t, 2> l_a_3_a_2_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].y) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016E7A713D40(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index eba878c..64f88c5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -96,5 +96,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013277586520(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002360160C6B0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index 84f92d5..2588940 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -14,10 +14,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 2> t = transpose(u_load(260u));
+  matrix<float16_t, 2, 2> t = transpose(u_load(260u));
   uint ubo_load_2 = u[0].z;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))).yx);
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))).yx);
   uint ubo_load_3 = u[0].z;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000163A139B3F0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index b06a4b7..a62df8b 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -27,5 +27,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026EEDF2FFD0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022FAE9F41E0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl
index 005b5be..5237a80 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -36,7 +36,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -62,3 +62,6 @@
   e(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A6A8D9CD00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 94c5821..594b209 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -82,5 +82,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015C7C60E240(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C38E1E4CB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl
index 46ae793..b218ac9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -22,7 +22,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -46,3 +46,6 @@
   p[1].m[0] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))).yx;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A7D0DD3F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index d6c90f8..378f210 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -67,5 +67,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002646B94E940(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E14442A440(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl
index 348b202..edaff6e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -42,7 +42,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -66,3 +66,6 @@
   s.Store<vector<float16_t, 2> >(132u, vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))).yx);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D3CA2A8380(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 8d52f6b..77faa23 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -97,5 +97,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014DC0BF2D10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001893E62C840(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 2c819a1..12ce149 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -26,7 +38,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol_3;
 }
 
@@ -42,14 +54,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(260u);
@@ -62,3 +67,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002489B43BF50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index c4cbeb6..ff28e2e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -92,5 +92,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C86E87E140(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FDC088C430(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index d1a3c57..278dc9f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,55 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:45:24 error: binary: %23 is not in scope
-    %32:u32 = add %31, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:50:24 error: binary: %23 is not in scope
-    %38:u32 = add %37, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:55:24 error: binary: %23 is not in scope
-    %44:u32 = add %43, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:68:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :60:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -106,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %56, 4u
+    %48:u32 = mul %47, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -149,53 +101,45 @@
     %16:u32 = mul 8u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:array<Inner, 4> = call %28, %10
-    %l_a_i_a:array<Inner, 4> = let %27
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:u32 = add %30, %16
-    %32:u32 = add %31, %23
-    %33:Inner = call %34, %32
-    %l_a_i_a_i:Inner = let %33
-    %36:u32 = add %10, %13
-    %37:u32 = add %36, %16
-    %38:u32 = add %37, %23
-    %39:mat2x2<f32> = call %40, %38
-    %l_a_i_a_i_m:mat2x2<f32> = let %39
-    %42:u32 = add %10, %13
-    %43:u32 = add %42, %16
-    %44:u32 = add %43, %23
-    %45:u32 = div %44, 16u
-    %46:ptr<uniform, vec4<u32>, read> = access %a, %45
-    %47:u32 = mod %44, 16u
-    %48:u32 = div %47, 4u
-    %49:vec4<u32> = load %46
-    %50:vec2<u32> = swizzle %49, zw
-    %51:vec2<u32> = swizzle %49, xy
-    %52:bool = eq %48, 2u
-    %53:vec2<u32> = hlsl.ternary %51, %50, %52
-    %54:vec2<f32> = bitcast %53
-    %l_a_i_a_i_m_i:vec2<f32> = let %54
-    %56:i32 = call %i
-    %23:u32 = mul %56, 4u
-    %57:u32 = add %10, %13
-    %58:u32 = add %57, %16
-    %59:u32 = add %58, %23
-    %60:u32 = div %59, 16u
-    %61:ptr<uniform, vec4<u32>, read> = access %a, %60
-    %62:u32 = mod %59, 16u
-    %63:u32 = div %62, 4u
-    %64:u32 = load_vector_element %61, %63
-    %65:f32 = bitcast %64
-    %l_a_i_a_i_m_i_i:f32 = let %65
+    %31:mat2x2<f32> = call %32, %30
+    %l_a_i_a_i_m:mat2x2<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:u32 = mod %35, 16u
+    %39:u32 = div %38, 4u
+    %40:vec4<u32> = load %37
+    %41:vec2<u32> = swizzle %40, zw
+    %42:vec2<u32> = swizzle %40, xy
+    %43:bool = eq %39, 2u
+    %44:vec2<u32> = hlsl.ternary %42, %41, %43
+    %45:vec2<f32> = bitcast %44
+    %l_a_i_a_i_m_i:vec2<f32> = let %45
+    %47:i32 = call %i
+    %48:u32 = mul %47, 4u
+    %49:u32 = add %10, %13
+    %50:u32 = add %49, %16
+    %51:u32 = add %50, %48
+    %52:u32 = div %51, 16u
+    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
+    %54:u32 = mod %51, 16u
+    %55:u32 = div %54, 4u
+    %56:u32 = load_vector_element %53, %55
+    %57:f32 = bitcast %56
+    %l_a_i_a_i_m_i_i:f32 = let %57
     ret
   }
 }
-%28 = func(%start_byte_offset:u32):array<Inner, 4> {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f32>(vec2<f32>(0.0f))))  # %a_1: 'a'
     loop [i: $B5, b: $B6, c: $B7] {  # loop_1
@@ -203,67 +147,67 @@
         next_iteration 0u  # -> $B6
       }
       $B6 (%idx:u32): {  # body
-        %70:bool = gte %idx, 4u
-        if %70 [t: $B8] {  # if_1
+        %62:bool = gte %idx, 4u
+        if %62 [t: $B8] {  # if_1
           $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %71:u32 = mul %idx, 64u
-        %72:u32 = add %start_byte_offset, %71
-        %73:ptr<function, Inner, read_write> = access %a_1, %idx
-        %74:Inner = call %34, %72
-        store %73, %74
+        %63:u32 = mul %idx, 64u
+        %64:u32 = add %start_byte_offset, %63
+        %65:ptr<function, Inner, read_write> = access %a_1, %idx
+        %66:Inner = call %28, %64
+        store %65, %66
         continue  # -> $B7
       }
       $B7: {  # continuing
-        %75:u32 = add %idx, 1u
-        next_iteration %75  # -> $B6
+        %67:u32 = add %idx, 1u
+        next_iteration %67  # -> $B6
       }
     }
-    %76:array<Inner, 4> = load %a_1
-    ret %76
+    %68:array<Inner, 4> = load %a_1
+    ret %68
   }
 }
-%34 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
   $B9: {
-    %78:mat2x2<f32> = call %40, %start_byte_offset_1
-    %79:Inner = construct %78
-    ret %79
+    %70:mat2x2<f32> = call %32, %start_byte_offset_1
+    %71:Inner = construct %70
+    ret %71
   }
 }
-%40 = func(%start_byte_offset_2:u32):mat2x2<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+%32 = func(%start_byte_offset_2:u32):mat2x2<f32> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %81:u32 = div %start_byte_offset_2, 16u
-    %82:ptr<uniform, vec4<u32>, read> = access %a, %81
-    %83:u32 = mod %start_byte_offset_2, 16u
-    %84:u32 = div %83, 4u
-    %85:vec4<u32> = load %82
-    %86:vec2<u32> = swizzle %85, zw
-    %87:vec2<u32> = swizzle %85, xy
-    %88:bool = eq %84, 2u
-    %89:vec2<u32> = hlsl.ternary %87, %86, %88
-    %90:vec2<f32> = bitcast %89
-    %91:u32 = add 8u, %start_byte_offset_2
-    %92:u32 = div %91, 16u
-    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
-    %94:u32 = mod %91, 16u
-    %95:u32 = div %94, 4u
-    %96:vec4<u32> = load %93
-    %97:vec2<u32> = swizzle %96, zw
-    %98:vec2<u32> = swizzle %96, xy
-    %99:bool = eq %95, 2u
-    %100:vec2<u32> = hlsl.ternary %98, %97, %99
-    %101:vec2<f32> = bitcast %100
-    %102:mat2x2<f32> = construct %90, %101
-    ret %102
+    %73:u32 = div %start_byte_offset_2, 16u
+    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
+    %75:u32 = mod %start_byte_offset_2, 16u
+    %76:u32 = div %75, 4u
+    %77:vec4<u32> = load %74
+    %78:vec2<u32> = swizzle %77, zw
+    %79:vec2<u32> = swizzle %77, xy
+    %80:bool = eq %76, 2u
+    %81:vec2<u32> = hlsl.ternary %79, %78, %80
+    %82:vec2<f32> = bitcast %81
+    %83:u32 = add 8u, %start_byte_offset_2
+    %84:u32 = div %83, 16u
+    %85:ptr<uniform, vec4<u32>, read> = access %a, %84
+    %86:u32 = mod %83, 16u
+    %87:u32 = div %86, 4u
+    %88:vec4<u32> = load %85
+    %89:vec2<u32> = swizzle %88, zw
+    %90:vec2<u32> = swizzle %88, xy
+    %91:bool = eq %87, 2u
+    %92:vec2<u32> = hlsl.ternary %90, %89, %91
+    %93:vec2<f32> = bitcast %92
+    %94:mat2x2<f32> = construct %82, %93
+    ret %94
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %104:array<Inner, 4> = call %28, %start_byte_offset_3
-    %105:Outer = construct %104
-    ret %105
+    %96:array<Inner, 4> = call %24, %start_byte_offset_3
+    %97:Outer = construct %96
+    ret %97
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -274,26 +218,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %109:bool = gte %idx_1, 4u
-        if %109 [t: $B16] {  # if_2
+        %101:bool = gte %idx_1, 4u
+        if %101 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %110:u32 = mul %idx_1, 256u
-        %111:u32 = add %start_byte_offset_4, %110
-        %112:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %113:Outer = call %25, %111
-        store %112, %113
+        %102:u32 = mul %idx_1, 256u
+        %103:u32 = add %start_byte_offset_4, %102
+        %104:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %105:Outer = call %21, %103
+        store %104, %105
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %114:u32 = add %idx_1, 1u
-        next_iteration %114  # -> $B14
+        %106:u32 = add %idx_1, 1u
+        next_iteration %106  # -> $B14
       }
     }
-    %115:array<Outer, 4> = load %a_2
-    ret %115
+    %107:array<Outer, 4> = load %a_2
+    ret %107
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 278dc9f..e6329e5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -139,9 +139,9 @@
     ret
   }
 }
-%24 = func(%start_byte_offset:u32):array<Inner, 4> {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f32>(vec2<f32>(0.0f))))  # %a_1: 'a'
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x2<f32>(vec2<f32>(0.0f))))))  # %a_1: 'a'
     loop [i: $B5, b: $B6, c: $B7] {  # loop_1
       $B5: {  # initializer
         next_iteration 0u  # -> $B6
@@ -153,10 +153,10 @@
             exit_loop  # loop_1
           }
         }
-        %63:u32 = mul %idx, 64u
+        %63:u32 = mul %idx, 256u
         %64:u32 = add %start_byte_offset, %63
-        %65:ptr<function, Inner, read_write> = access %a_1, %idx
-        %66:Inner = call %28, %64
+        %65:ptr<function, Outer, read_write> = access %a_1, %idx
+        %66:Outer = call %21, %64
         store %65, %66
         continue  # -> $B7
       }
@@ -165,78 +165,78 @@
         next_iteration %67  # -> $B6
       }
     }
-    %68:array<Inner, 4> = load %a_1
+    %68:array<Outer, 4> = load %a_1
     ret %68
   }
 }
-%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
   $B9: {
-    %70:mat2x2<f32> = call %32, %start_byte_offset_1
-    %71:Inner = construct %70
+    %70:array<Inner, 4> = call %24, %start_byte_offset_1
+    %71:Outer = construct %70
     ret %71
   }
 }
-%32 = func(%start_byte_offset_2:u32):mat2x2<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %73:u32 = div %start_byte_offset_2, 16u
-    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
-    %75:u32 = mod %start_byte_offset_2, 16u
-    %76:u32 = div %75, 4u
-    %77:vec4<u32> = load %74
-    %78:vec2<u32> = swizzle %77, zw
-    %79:vec2<u32> = swizzle %77, xy
-    %80:bool = eq %76, 2u
-    %81:vec2<u32> = hlsl.ternary %79, %78, %80
-    %82:vec2<f32> = bitcast %81
-    %83:u32 = add 8u, %start_byte_offset_2
-    %84:u32 = div %83, 16u
-    %85:ptr<uniform, vec4<u32>, read> = access %a, %84
-    %86:u32 = mod %83, 16u
-    %87:u32 = div %86, 4u
-    %88:vec4<u32> = load %85
-    %89:vec2<u32> = swizzle %88, zw
-    %90:vec2<u32> = swizzle %88, xy
-    %91:bool = eq %87, 2u
-    %92:vec2<u32> = hlsl.ternary %90, %89, %91
-    %93:vec2<f32> = bitcast %92
-    %94:mat2x2<f32> = construct %82, %93
-    ret %94
-  }
-}
-%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %96:array<Inner, 4> = call %24, %start_byte_offset_3
-    %97:Outer = construct %96
-    ret %97
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x2<f32>(vec2<f32>(0.0f))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x2<f32>(vec2<f32>(0.0f))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %101:bool = gte %idx_1, 4u
-        if %101 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %75:bool = gte %idx_1, 4u
+        if %75 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %102:u32 = mul %idx_1, 256u
-        %103:u32 = add %start_byte_offset_4, %102
-        %104:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %105:Outer = call %21, %103
-        store %104, %105
-        continue  # -> $B15
+        %76:u32 = mul %idx_1, 64u
+        %77:u32 = add %start_byte_offset_2, %76
+        %78:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %79:Inner = call %28, %77
+        store %78, %79
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %106:u32 = add %idx_1, 1u
-        next_iteration %106  # -> $B14
+      $B13: {  # continuing
+        %80:u32 = add %idx_1, 1u
+        next_iteration %80  # -> $B12
       }
     }
-    %107:array<Outer, 4> = load %a_2
+    %81:array<Inner, 4> = load %a_2
+    ret %81
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %83:mat2x2<f32> = call %32, %start_byte_offset_3
+    %84:Inner = construct %83
+    ret %84
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat2x2<f32> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %86:u32 = div %start_byte_offset_4, 16u
+    %87:ptr<uniform, vec4<u32>, read> = access %a, %86
+    %88:u32 = mod %start_byte_offset_4, 16u
+    %89:u32 = div %88, 4u
+    %90:vec4<u32> = load %87
+    %91:vec2<u32> = swizzle %90, zw
+    %92:vec2<u32> = swizzle %90, xy
+    %93:bool = eq %89, 2u
+    %94:vec2<u32> = hlsl.ternary %92, %91, %93
+    %95:vec2<f32> = bitcast %94
+    %96:u32 = add 8u, %start_byte_offset_4
+    %97:u32 = div %96, 16u
+    %98:ptr<uniform, vec4<u32>, read> = access %a, %97
+    %99:u32 = mod %96, 16u
+    %100:u32 = div %99, 4u
+    %101:vec4<u32> = load %98
+    %102:vec2<u32> = swizzle %101, zw
+    %103:vec2<u32> = swizzle %101, xy
+    %104:bool = eq %100, 2u
+    %105:vec2<u32> = hlsl.ternary %103, %102, %104
+    %106:vec2<f32> = bitcast %105
+    %107:mat2x2<f32> = construct %95, %106
     ret %107
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index f6d8e42..4a5d6fc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -32,7 +32,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -48,7 +48,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -65,26 +65,29 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 2, 3> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 2, 3> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_2 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (8u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint4 ubo_load_5 = a[scalar_offset_2 / 4];
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const vector<float16_t, 3> l_a_i_a_i_m_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 3> l_a_i_a_i_m_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (8u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023D55BDB740(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 2e9398d..5c9ff58 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,55 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:65:5 note: %23 declared here
-    %23:u32 = mul %53, 2u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:65:5 note: %23 declared here
-    %23:u32 = mul %53, 2u
-    ^^^^^^^
-
-:48:24 error: binary: %23 is not in scope
-    %35:u32 = add %34, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:65:5 note: %23 declared here
-    %23:u32 = mul %53, 2u
-    ^^^^^^^
-
-:53:24 error: binary: %23 is not in scope
-    %41:u32 = add %40, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:65:5 note: %23 declared here
-    %23:u32 = mul %53, 2u
-    ^^^^^^^
-
-:65:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :55:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -108,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %53, 2u
+    %43:u32 = mul %42, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -151,79 +103,69 @@
     %16:u32 = mul 8u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:u32 = add %33, %16
-    %35:u32 = add %34, %23
-    %36:Inner = call %37, %35
-    %l_a_i_a_i:Inner = let %36
-    %39:u32 = add %10, %13
-    %40:u32 = add %39, %16
-    %41:u32 = add %40, %23
-    %42:mat2x3<f16> = call %43, %41
-    %l_a_i_a_i_m:mat2x3<f16> = let %42
-    %45:u32 = add %10, %13
-    %46:u32 = add %45, %16
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat2x3<f16> = call %32, %30
+    %l_a_i_a_i_m:mat2x3<f16> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f16> = bitcast %38
+    %40:vec3<f16> = swizzle %39, xyz
+    %l_a_i_a_i_m_i:vec3<f16> = let %40
+    %42:i32 = call %i
+    %43:u32 = mul %42, 2u
+    %44:u32 = add %10, %13
+    %45:u32 = add %44, %16
+    %46:u32 = add %45, %43
     %47:u32 = div %46, 16u
     %48:ptr<uniform, vec4<u32>, read> = access %a, %47
-    %49:vec4<u32> = load %48
-    %50:vec4<f16> = bitcast %49
-    %51:vec3<f16> = swizzle %50, xyz
-    %l_a_i_a_i_m_i:vec3<f16> = let %51
-    %53:i32 = call %i
-    %23:u32 = mul %53, 2u
-    %54:u32 = add %10, %13
-    %55:u32 = add %54, %16
-    %56:u32 = add %55, %23
-    %57:u32 = div %56, 16u
-    %58:ptr<uniform, vec4<u32>, read> = access %a, %57
-    %59:u32 = mod %56, 16u
-    %60:u32 = div %59, 4u
-    %61:u32 = load_vector_element %58, %60
-    %62:u32 = mod %56, 4u
-    %63:bool = eq %62, 0u
-    %64:u32 = hlsl.ternary 16u, 0u, %63
-    %65:u32 = shr %61, %64
-    %66:f32 = hlsl.f16tof32 %65
-    %67:f16 = convert %66
-    %l_a_i_a_i_m_i_i:f16 = let %67
+    %49:u32 = mod %46, 16u
+    %50:u32 = div %49, 4u
+    %51:u32 = load_vector_element %48, %50
+    %52:u32 = mod %46, 4u
+    %53:bool = eq %52, 0u
+    %54:u32 = hlsl.ternary 16u, 0u, %53
+    %55:u32 = shr %51, %54
+    %56:f32 = hlsl.f16tof32 %55
+    %57:f16 = convert %56
+    %l_a_i_a_i_m_i_i:f16 = let %57
     ret
   }
 }
-%43 = func(%start_byte_offset:u32):mat2x3<f16> {
+%28 = func(%start_byte_offset:u32):Inner {
   $B4: {
-    %70:u32 = div %start_byte_offset, 16u
-    %71:ptr<uniform, vec4<u32>, read> = access %a, %70
-    %72:vec4<u32> = load %71
-    %73:vec4<f16> = bitcast %72
-    %74:vec3<f16> = swizzle %73, xyz
-    %75:u32 = add 8u, %start_byte_offset
-    %76:u32 = div %75, 16u
-    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
-    %78:vec4<u32> = load %77
-    %79:vec4<f16> = bitcast %78
-    %80:vec3<f16> = swizzle %79, xyz
-    %81:mat2x3<f16> = construct %74, %80
-    ret %81
+    %60:mat2x3<f16> = call %32, %start_byte_offset
+    %61:Inner = construct %60
+    ret %61
   }
 }
-%37 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%32 = func(%start_byte_offset_1:u32):mat2x3<f16> {  # %start_byte_offset_1: 'start_byte_offset'
   $B5: {
-    %83:mat2x3<f16> = call %43, %start_byte_offset_1
-    %84:Inner = construct %83
-    ret %84
+    %63:u32 = div %start_byte_offset_1, 16u
+    %64:ptr<uniform, vec4<u32>, read> = access %a, %63
+    %65:vec4<u32> = load %64
+    %66:vec4<f16> = bitcast %65
+    %67:vec3<f16> = swizzle %66, xyz
+    %68:u32 = add 8u, %start_byte_offset_1
+    %69:u32 = div %68, 16u
+    %70:ptr<uniform, vec4<u32>, read> = access %a, %69
+    %71:vec4<u32> = load %70
+    %72:vec4<f16> = bitcast %71
+    %73:vec3<f16> = swizzle %72, xyz
+    %74:mat2x3<f16> = construct %67, %73
+    ret %74
   }
 }
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x3<f16>(vec3<f16>(0.0h))))  # %a_1: 'a'
     loop [i: $B7, b: $B8, c: $B9] {  # loop_1
@@ -231,33 +173,33 @@
         next_iteration 0u  # -> $B8
       }
       $B8 (%idx:u32): {  # body
-        %88:bool = gte %idx, 4u
-        if %88 [t: $B10] {  # if_1
+        %78:bool = gte %idx, 4u
+        if %78 [t: $B10] {  # if_1
           $B10: {  # true
             exit_loop  # loop_1
           }
         }
-        %89:u32 = mul %idx, 64u
-        %90:u32 = add %start_byte_offset_2, %89
-        %91:ptr<function, Inner, read_write> = access %a_1, %idx
-        %92:Inner = call %37, %90
-        store %91, %92
+        %79:u32 = mul %idx, 64u
+        %80:u32 = add %start_byte_offset_2, %79
+        %81:ptr<function, Inner, read_write> = access %a_1, %idx
+        %82:Inner = call %28, %80
+        store %81, %82
         continue  # -> $B9
       }
       $B9: {  # continuing
-        %93:u32 = add %idx, 1u
-        next_iteration %93  # -> $B8
+        %83:u32 = add %idx, 1u
+        next_iteration %83  # -> $B8
       }
     }
-    %94:array<Inner, 4> = load %a_1
-    ret %94
+    %84:array<Inner, 4> = load %a_1
+    ret %84
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %96:array<Inner, 4> = call %31, %start_byte_offset_3
-    %97:Outer = construct %96
-    ret %97
+    %86:array<Inner, 4> = call %24, %start_byte_offset_3
+    %87:Outer = construct %86
+    ret %87
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -268,26 +210,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %101:bool = gte %idx_1, 4u
-        if %101 [t: $B16] {  # if_2
+        %91:bool = gte %idx_1, 4u
+        if %91 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %102:u32 = mul %idx_1, 256u
-        %103:u32 = add %start_byte_offset_4, %102
-        %104:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %105:Outer = call %25, %103
-        store %104, %105
+        %92:u32 = mul %idx_1, 256u
+        %93:u32 = add %start_byte_offset_4, %92
+        %94:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %95:Outer = call %21, %93
+        store %94, %95
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %106:u32 = add %idx_1, 1u
-        next_iteration %106  # -> $B14
+        %96:u32 = add %idx_1, 1u
+        next_iteration %96  # -> $B14
       }
     }
-    %107:array<Outer, 4> = load %a_2
-    ret %107
+    %97:array<Outer, 4> = load %a_2
+    ret %97
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index cfbd062..99306bc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -141,94 +141,94 @@
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %60:array<Inner, 4> = call %24, %start_byte_offset
-    %61:Outer = construct %60
-    ret %61
-  }
-}
-%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x3<f16>(vec3<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x3<f16>(vec3<f16>(0.0h))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %65:bool = gte %idx, 4u
-        if %65 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %62:bool = gte %idx, 4u
+        if %62 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %66:u32 = mul %idx, 64u
-        %67:u32 = add %start_byte_offset_1, %66
-        %68:ptr<function, Inner, read_write> = access %a_1, %idx
-        %69:Inner = call %28, %67
-        store %68, %69
-        continue  # -> $B8
+        %63:u32 = mul %idx, 256u
+        %64:u32 = add %start_byte_offset, %63
+        %65:ptr<function, Outer, read_write> = access %a_1, %idx
+        %66:Outer = call %21, %64
+        store %65, %66
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %70:u32 = add %idx, 1u
-        next_iteration %70  # -> $B7
+      $B7: {  # continuing
+        %67:u32 = add %idx, 1u
+        next_iteration %67  # -> $B6
       }
     }
-    %71:array<Inner, 4> = load %a_1
+    %68:array<Outer, 4> = load %a_1
+    ret %68
+  }
+}
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %70:array<Inner, 4> = call %24, %start_byte_offset_1
+    %71:Outer = construct %70
     ret %71
   }
 }
-%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %73:mat2x3<f16> = call %32, %start_byte_offset_2
-    %74:Inner = construct %73
-    ret %74
-  }
-}
-%32 = func(%start_byte_offset_3:u32):mat2x3<f16> {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %76:u32 = div %start_byte_offset_3, 16u
-    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
-    %78:vec4<u32> = load %77
-    %79:vec4<f16> = bitcast %78
-    %80:vec3<f16> = swizzle %79, xyz
-    %81:u32 = add 8u, %start_byte_offset_3
-    %82:u32 = div %81, 16u
-    %83:ptr<uniform, vec4<u32>, read> = access %a, %82
-    %84:vec4<u32> = load %83
-    %85:vec4<f16> = bitcast %84
-    %86:vec3<f16> = swizzle %85, xyz
-    %87:mat2x3<f16> = construct %80, %86
-    ret %87
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x3<f16>(vec3<f16>(0.0h))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x3<f16>(vec3<f16>(0.0h))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %91:bool = gte %idx_1, 4u
-        if %91 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %75:bool = gte %idx_1, 4u
+        if %75 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %92:u32 = mul %idx_1, 256u
-        %93:u32 = add %start_byte_offset_4, %92
-        %94:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %95:Outer = call %21, %93
-        store %94, %95
-        continue  # -> $B15
+        %76:u32 = mul %idx_1, 64u
+        %77:u32 = add %start_byte_offset_2, %76
+        %78:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %79:Inner = call %28, %77
+        store %78, %79
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %96:u32 = add %idx_1, 1u
-        next_iteration %96  # -> $B14
+      $B13: {  # continuing
+        %80:u32 = add %idx_1, 1u
+        next_iteration %80  # -> $B12
       }
     }
-    %97:array<Outer, 4> = load %a_2
+    %81:array<Inner, 4> = load %a_2
+    ret %81
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %83:mat2x3<f16> = call %32, %start_byte_offset_3
+    %84:Inner = construct %83
+    ret %84
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat2x3<f16> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %86:u32 = div %start_byte_offset_4, 16u
+    %87:ptr<uniform, vec4<u32>, read> = access %a, %86
+    %88:vec4<u32> = load %87
+    %89:vec4<f16> = bitcast %88
+    %90:vec3<f16> = swizzle %89, xyz
+    %91:u32 = add 8u, %start_byte_offset_4
+    %92:u32 = div %91, 16u
+    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
+    %94:vec4<u32> = load %93
+    %95:vec4<f16> = bitcast %94
+    %96:vec3<f16> = swizzle %95, xyz
+    %97:mat2x3<f16> = construct %90, %96
     ret %97
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index f433030..c631409 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -42,7 +42,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -59,15 +59,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 2, 3> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 2, 3> l_a_3_a_2_m = a_load_4(896u);
   uint2 ubo_load_4 = a[56].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const vector<float16_t, 3> l_a_3_a_2_m_1 = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
+  vector<float16_t, 3> l_a_3_a_2_m_1 = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000167C2BB6530(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 673a3b7..9a895dc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -98,5 +98,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E614EA4F60(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027D6DCA91A0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index a320455..74734ec 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -20,14 +20,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 2> t = transpose(u_load(264u));
+  matrix<float16_t, 3, 2> t = transpose(u_load(264u));
   uint2 ubo_load_4 = u[1].xy;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
+  float16_t l = length(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
   uint2 ubo_load_5 = u[1].xy;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   float16_t ubo_load_5_y = f16tof32(ubo_load_5[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023254ADC490(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index e7748e3..96a190e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015B2B432370(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020ADA944CD0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
index 0b0b65a..89a2fc0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -42,7 +42,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -72,3 +72,6 @@
   e(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B01BF44CE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 9d24c21..4e300b6 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -84,5 +84,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021A45DD2540(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C22A045690(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
index b3af07c..6a6cae3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -28,7 +28,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -54,3 +54,6 @@
   p[1].m[0] = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016E5A09E700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 2329238..2ba7896 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -69,5 +69,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021CCB2ABE40(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C58CF85D70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 1818ba4..49df1e4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -48,7 +48,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -74,3 +74,6 @@
   s.Store<vector<float16_t, 3> >(136u, vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]).zxy);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002670957AFB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 99f1a12..8f25292 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -99,5 +99,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001694C925500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028B26B76350(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 00e8dd4..b52be6d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -32,7 +44,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol_3;
 }
 
@@ -48,14 +60,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(264u);
@@ -70,3 +75,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D481E1D590(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index a5f7112..79e80ab 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -94,5 +94,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022B49612DF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D0BF543E40(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 09eaefe..9b875a5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,43 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:63:5 note: %23 declared here
-    %23:u32 = mul %51, 4u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:63:5 note: %23 declared here
-    %23:u32 = mul %51, 4u
-    ^^^^^^^
-
-:48:24 error: binary: %23 is not in scope
-    %35:u32 = add %34, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:63:5 note: %23 declared here
-    %23:u32 = mul %51, 4u
-    ^^^^^^^
-
-:63:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :55:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -94,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %51, 4u
+    %43:u32 = mul %42, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -137,106 +101,98 @@
     %16:u32 = mul 16u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:u32 = add %33, %16
-    %35:u32 = add %34, %23
-    %36:Inner = call %37, %35
-    %l_a_i_a_i:Inner = let %36
-    %39:u32 = add %10, %13
-    %40:mat2x3<f32> = call %41, %39
-    %l_a_i_a_i_m:mat2x3<f32> = let %40
-    %43:u32 = add %10, %13
-    %44:u32 = add %43, %16
-    %45:u32 = div %44, 16u
-    %46:ptr<uniform, vec4<u32>, read> = access %a, %45
-    %47:vec4<u32> = load %46
-    %48:vec3<u32> = swizzle %47, xyz
-    %49:vec3<f32> = bitcast %48
-    %l_a_i_a_i_m_i:vec3<f32> = let %49
-    %51:i32 = call %i
-    %23:u32 = mul %51, 4u
-    %52:u32 = add %10, %13
-    %53:u32 = add %52, %16
-    %54:u32 = add %53, %23
-    %55:u32 = div %54, 16u
-    %56:ptr<uniform, vec4<u32>, read> = access %a, %55
-    %57:u32 = mod %54, 16u
-    %58:u32 = div %57, 4u
-    %59:u32 = load_vector_element %56, %58
-    %60:f32 = bitcast %59
-    %l_a_i_a_i_m_i_i:f32 = let %60
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat2x3<f32> = call %32, %30
+    %l_a_i_a_i_m:mat2x3<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec3<u32> = swizzle %38, xyz
+    %40:vec3<f32> = bitcast %39
+    %l_a_i_a_i_m_i:vec3<f32> = let %40
+    %42:i32 = call %i
+    %43:u32 = mul %42, 4u
+    %44:u32 = add %10, %13
+    %45:u32 = add %44, %16
+    %46:u32 = add %45, %43
+    %47:u32 = div %46, 16u
+    %48:ptr<uniform, vec4<u32>, read> = access %a, %47
+    %49:u32 = mod %46, 16u
+    %50:u32 = div %49, 4u
+    %51:u32 = load_vector_element %48, %50
+    %52:f32 = bitcast %51
+    %l_a_i_a_i_m_i_i:f32 = let %52
     ret
   }
 }
-%41 = func(%start_byte_offset:u32):mat2x3<f32> {
+%21 = func(%start_byte_offset:u32):Outer {
   $B4: {
-    %63:u32 = div %start_byte_offset, 16u
-    %64:ptr<uniform, vec4<u32>, read> = access %a, %63
-    %65:vec4<u32> = load %64
-    %66:vec3<u32> = swizzle %65, xyz
-    %67:vec3<f32> = bitcast %66
-    %68:u32 = add 16u, %start_byte_offset
-    %69:u32 = div %68, 16u
-    %70:ptr<uniform, vec4<u32>, read> = access %a, %69
-    %71:vec4<u32> = load %70
-    %72:vec3<u32> = swizzle %71, xyz
-    %73:vec3<f32> = bitcast %72
-    %74:mat2x3<f32> = construct %67, %73
-    ret %74
+    %55:array<Inner, 4> = call %24, %start_byte_offset
+    %56:Outer = construct %55
+    ret %56
   }
 }
-%37 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
   $B5: {
-    %76:mat2x3<f32> = call %41, %start_byte_offset_1
-    %77:Inner = construct %76
-    ret %77
-  }
-}
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x3<f32>(vec3<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
+      $B6: {  # initializer
+        next_iteration 0u  # -> $B7
       }
-      $B8 (%idx:u32): {  # body
-        %81:bool = gte %idx, 4u
-        if %81 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B7 (%idx:u32): {  # body
+        %60:bool = gte %idx, 4u
+        if %60 [t: $B9] {  # if_1
+          $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %82:u32 = mul %idx, 64u
-        %83:u32 = add %start_byte_offset_2, %82
-        %84:ptr<function, Inner, read_write> = access %a_1, %idx
-        %85:Inner = call %37, %83
-        store %84, %85
-        continue  # -> $B9
+        %61:u32 = mul %idx, 64u
+        %62:u32 = add %start_byte_offset_1, %61
+        %63:ptr<function, Inner, read_write> = access %a_1, %idx
+        %64:Inner = call %28, %62
+        store %63, %64
+        continue  # -> $B8
       }
-      $B9: {  # continuing
-        %86:u32 = add %idx, 1u
-        next_iteration %86  # -> $B8
+      $B8: {  # continuing
+        %65:u32 = add %idx, 1u
+        next_iteration %65  # -> $B7
       }
     }
-    %87:array<Inner, 4> = load %a_1
-    ret %87
+    %66:array<Inner, 4> = load %a_1
+    ret %66
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %68:mat2x3<f32> = call %32, %start_byte_offset_2
+    %69:Inner = construct %68
+    ret %69
+  }
+}
+%32 = func(%start_byte_offset_3:u32):mat2x3<f32> {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %89:array<Inner, 4> = call %31, %start_byte_offset_3
-    %90:Outer = construct %89
-    ret %90
+    %71:u32 = div %start_byte_offset_3, 16u
+    %72:ptr<uniform, vec4<u32>, read> = access %a, %71
+    %73:vec4<u32> = load %72
+    %74:vec3<u32> = swizzle %73, xyz
+    %75:vec3<f32> = bitcast %74
+    %76:u32 = add 16u, %start_byte_offset_3
+    %77:u32 = div %76, 16u
+    %78:ptr<uniform, vec4<u32>, read> = access %a, %77
+    %79:vec4<u32> = load %78
+    %80:vec3<u32> = swizzle %79, xyz
+    %81:vec3<f32> = bitcast %80
+    %82:mat2x3<f32> = construct %75, %81
+    ret %82
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -247,26 +203,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %94:bool = gte %idx_1, 4u
-        if %94 [t: $B16] {  # if_2
+        %86:bool = gte %idx_1, 4u
+        if %86 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %95:u32 = mul %idx_1, 256u
-        %96:u32 = add %start_byte_offset_4, %95
-        %97:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %98:Outer = call %25, %96
-        store %97, %98
+        %87:u32 = mul %idx_1, 256u
+        %88:u32 = add %start_byte_offset_4, %87
+        %89:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %90:Outer = call %21, %88
+        store %89, %90
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %99:u32 = add %idx_1, 1u
-        next_iteration %99  # -> $B14
+        %91:u32 = add %idx_1, 1u
+        next_iteration %91  # -> $B14
       }
     }
-    %100:array<Outer, 4> = load %a_2
-    ret %100
+    %92:array<Outer, 4> = load %a_2
+    ret %92
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index d0f862e..d002a70 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -134,9 +134,9 @@
     ret
   }
 }
-%24 = func(%start_byte_offset:u32):array<Inner, 4> {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x3<f32>(vec3<f32>(0.0f))))  # %a_1: 'a'
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x3<f32>(vec3<f32>(0.0f))))))  # %a_1: 'a'
     loop [i: $B5, b: $B6, c: $B7] {  # loop_1
       $B5: {  # initializer
         next_iteration 0u  # -> $B6
@@ -148,10 +148,10 @@
             exit_loop  # loop_1
           }
         }
-        %58:u32 = mul %idx, 64u
+        %58:u32 = mul %idx, 256u
         %59:u32 = add %start_byte_offset, %58
-        %60:ptr<function, Inner, read_write> = access %a_1, %idx
-        %61:Inner = call %28, %59
+        %60:ptr<function, Outer, read_write> = access %a_1, %idx
+        %61:Outer = call %21, %59
         store %60, %61
         continue  # -> $B7
       }
@@ -160,68 +160,68 @@
         next_iteration %62  # -> $B6
       }
     }
-    %63:array<Inner, 4> = load %a_1
+    %63:array<Outer, 4> = load %a_1
     ret %63
   }
 }
-%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
   $B9: {
-    %65:mat2x3<f32> = call %32, %start_byte_offset_1
-    %66:Inner = construct %65
+    %65:array<Inner, 4> = call %24, %start_byte_offset_1
+    %66:Outer = construct %65
     ret %66
   }
 }
-%32 = func(%start_byte_offset_2:u32):mat2x3<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %68:u32 = div %start_byte_offset_2, 16u
-    %69:ptr<uniform, vec4<u32>, read> = access %a, %68
-    %70:vec4<u32> = load %69
-    %71:vec3<u32> = swizzle %70, xyz
-    %72:vec3<f32> = bitcast %71
-    %73:u32 = add 16u, %start_byte_offset_2
-    %74:u32 = div %73, 16u
-    %75:ptr<uniform, vec4<u32>, read> = access %a, %74
-    %76:vec4<u32> = load %75
-    %77:vec3<u32> = swizzle %76, xyz
-    %78:vec3<f32> = bitcast %77
-    %79:mat2x3<f32> = construct %72, %78
-    ret %79
-  }
-}
-%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %81:array<Inner, 4> = call %24, %start_byte_offset_3
-    %82:Outer = construct %81
-    ret %82
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x3<f32>(vec3<f32>(0.0f))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x3<f32>(vec3<f32>(0.0f))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %86:bool = gte %idx_1, 4u
-        if %86 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %70:bool = gte %idx_1, 4u
+        if %70 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %87:u32 = mul %idx_1, 256u
-        %88:u32 = add %start_byte_offset_4, %87
-        %89:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %90:Outer = call %21, %88
-        store %89, %90
-        continue  # -> $B15
+        %71:u32 = mul %idx_1, 64u
+        %72:u32 = add %start_byte_offset_2, %71
+        %73:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %74:Inner = call %28, %72
+        store %73, %74
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %91:u32 = add %idx_1, 1u
-        next_iteration %91  # -> $B14
+      $B13: {  # continuing
+        %75:u32 = add %idx_1, 1u
+        next_iteration %75  # -> $B12
       }
     }
-    %92:array<Outer, 4> = load %a_2
+    %76:array<Inner, 4> = load %a_2
+    ret %76
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %78:mat2x3<f32> = call %32, %start_byte_offset_3
+    %79:Inner = construct %78
+    ret %79
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat2x3<f32> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %81:u32 = div %start_byte_offset_4, 16u
+    %82:ptr<uniform, vec4<u32>, read> = access %a, %81
+    %83:vec4<u32> = load %82
+    %84:vec3<u32> = swizzle %83, xyz
+    %85:vec3<f32> = bitcast %84
+    %86:u32 = add 16u, %start_byte_offset_4
+    %87:u32 = div %86, 16u
+    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
+    %89:vec4<u32> = load %88
+    %90:vec3<u32> = swizzle %89, xyz
+    %91:vec3<f32> = bitcast %90
+    %92:mat2x3<f32> = construct %85, %91
     ret %92
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 37f794a..954c485 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -32,7 +32,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -48,7 +48,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -65,26 +65,29 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 2, 4> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 2, 4> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_2 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (8u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint4 ubo_load_5 = a[scalar_offset_2 / 4];
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const vector<float16_t, 4> l_a_i_a_i_m_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 4> l_a_i_a_i_m_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (8u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F331534640(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index d63f08a..421f139 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,43 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :40:24 error: binary: %26 is not in scope
-    %25:u32 = add %24, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:61:5 note: %26 declared here
-    %26:u32 = mul %49, 2u
-    ^^^^^^^
-
-:45:24 error: binary: %26 is not in scope
-    %32:u32 = add %31, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:61:5 note: %26 declared here
-    %26:u32 = mul %49, 2u
-    ^^^^^^^
-
-:50:24 error: binary: %26 is not in scope
-    %38:u32 = add %37, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:61:5 note: %26 declared here
-    %26:u32 = mul %49, 2u
-    ^^^^^^^
-
-:61:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :54:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -96,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %26:u32 = mul %49, 2u
+    %42:u32 = mul %41, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -141,56 +105,49 @@
     %l_a:array<Outer, 4> = let %17
     %20:Outer = call %21, %10
     %l_a_i:Outer = let %20
-    %23:u32 = add %10, %13
-    %24:u32 = add %23, %16
-    %25:u32 = add %24, %26
-    %27:array<Inner, 4> = call %28, %25
-    %l_a_i_a:array<Inner, 4> = let %27
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:u32 = add %30, %16
-    %32:u32 = add %31, %26
-    %33:Inner = call %34, %32
-    %l_a_i_a_i:Inner = let %33
-    %36:u32 = add %10, %13
-    %37:u32 = add %36, %16
-    %38:u32 = add %37, %26
-    %39:mat2x4<f16> = call %40, %38
-    %l_a_i_a_i_m:mat2x4<f16> = let %39
-    %42:u32 = add %10, %13
-    %43:u32 = add %42, %16
-    %44:u32 = div %43, 16u
-    %45:ptr<uniform, vec4<u32>, read> = access %a, %44
-    %46:vec4<u32> = load %45
-    %47:vec4<f16> = bitcast %46
-    %l_a_i_a_i_m_i:vec4<f16> = let %47
-    %49:i32 = call %i
-    %26:u32 = mul %49, 2u
-    %50:u32 = add %10, %13
-    %51:u32 = add %50, %16
-    %52:u32 = add %51, %26
-    %53:u32 = div %52, 16u
-    %54:ptr<uniform, vec4<u32>, read> = access %a, %53
-    %55:u32 = mod %52, 16u
-    %56:u32 = div %55, 4u
-    %57:u32 = load_vector_element %54, %56
-    %58:u32 = mod %52, 4u
-    %59:bool = eq %58, 0u
-    %60:u32 = hlsl.ternary 16u, 0u, %59
-    %61:u32 = shr %57, %60
-    %62:f32 = hlsl.f16tof32 %61
-    %63:f16 = convert %62
-    %l_a_i_a_i_m_i_i:f16 = let %63
+    %31:mat2x4<f16> = call %32, %30
+    %l_a_i_a_i_m:mat2x4<f16> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f16> = bitcast %38
+    %l_a_i_a_i_m_i:vec4<f16> = let %39
+    %41:i32 = call %i
+    %42:u32 = mul %41, 2u
+    %43:u32 = add %10, %13
+    %44:u32 = add %43, %16
+    %45:u32 = add %44, %42
+    %46:u32 = div %45, 16u
+    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
+    %48:u32 = mod %45, 16u
+    %49:u32 = div %48, 4u
+    %50:u32 = load_vector_element %47, %49
+    %51:u32 = mod %45, 4u
+    %52:bool = eq %51, 0u
+    %53:u32 = hlsl.ternary 16u, 0u, %52
+    %54:u32 = shr %50, %53
+    %55:f32 = hlsl.f16tof32 %54
+    %56:f16 = convert %55
+    %l_a_i_a_i_m_i_i:f16 = let %56
     ret
   }
 }
 %21 = func(%start_byte_offset:u32):Outer {
   $B4: {
-    %66:array<Inner, 4> = call %28, %start_byte_offset
-    %67:Outer = construct %66
-    ret %67
+    %59:array<Inner, 4> = call %24, %start_byte_offset
+    %60:Outer = construct %59
+    ret %60
   }
 }
-%28 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
   $B5: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f16>(vec4<f16>(0.0h))))  # %a_1: 'a'
     loop [i: $B6, b: $B7, c: $B8] {  # loop_1
@@ -198,48 +155,48 @@
         next_iteration 0u  # -> $B7
       }
       $B7 (%idx:u32): {  # body
-        %71:bool = gte %idx, 4u
-        if %71 [t: $B9] {  # if_1
+        %64:bool = gte %idx, 4u
+        if %64 [t: $B9] {  # if_1
           $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %72:u32 = mul %idx, 64u
-        %73:u32 = add %start_byte_offset_1, %72
-        %74:ptr<function, Inner, read_write> = access %a_1, %idx
-        %75:Inner = call %34, %73
-        store %74, %75
+        %65:u32 = mul %idx, 64u
+        %66:u32 = add %start_byte_offset_1, %65
+        %67:ptr<function, Inner, read_write> = access %a_1, %idx
+        %68:Inner = call %28, %66
+        store %67, %68
         continue  # -> $B8
       }
       $B8: {  # continuing
-        %76:u32 = add %idx, 1u
-        next_iteration %76  # -> $B7
+        %69:u32 = add %idx, 1u
+        next_iteration %69  # -> $B7
       }
     }
-    %77:array<Inner, 4> = load %a_1
-    ret %77
+    %70:array<Inner, 4> = load %a_1
+    ret %70
   }
 }
-%34 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %79:mat2x4<f16> = call %40, %start_byte_offset_2
-    %80:Inner = construct %79
-    ret %80
+    %72:mat2x4<f16> = call %32, %start_byte_offset_2
+    %73:Inner = construct %72
+    ret %73
   }
 }
-%40 = func(%start_byte_offset_3:u32):mat2x4<f16> {  # %start_byte_offset_3: 'start_byte_offset'
+%32 = func(%start_byte_offset_3:u32):mat2x4<f16> {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %82:u32 = div %start_byte_offset_3, 16u
-    %83:ptr<uniform, vec4<u32>, read> = access %a, %82
-    %84:vec4<u32> = load %83
-    %85:vec4<f16> = bitcast %84
-    %86:u32 = add 8u, %start_byte_offset_3
-    %87:u32 = div %86, 16u
-    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
-    %89:vec4<u32> = load %88
-    %90:vec4<f16> = bitcast %89
-    %91:mat2x4<f16> = construct %85, %90
-    ret %91
+    %75:u32 = div %start_byte_offset_3, 16u
+    %76:ptr<uniform, vec4<u32>, read> = access %a, %75
+    %77:vec4<u32> = load %76
+    %78:vec4<f16> = bitcast %77
+    %79:u32 = add 8u, %start_byte_offset_3
+    %80:u32 = div %79, 16u
+    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
+    %82:vec4<u32> = load %81
+    %83:vec4<f16> = bitcast %82
+    %84:mat2x4<f16> = construct %78, %83
+    ret %84
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -250,26 +207,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %95:bool = gte %idx_1, 4u
-        if %95 [t: $B16] {  # if_2
+        %88:bool = gte %idx_1, 4u
+        if %88 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %96:u32 = mul %idx_1, 256u
-        %97:u32 = add %start_byte_offset_4, %96
-        %98:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %99:Outer = call %21, %97
-        store %98, %99
+        %89:u32 = mul %idx_1, 256u
+        %90:u32 = add %start_byte_offset_4, %89
+        %91:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %92:Outer = call %21, %90
+        store %91, %92
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %100:u32 = add %idx_1, 1u
-        next_iteration %100  # -> $B14
+        %93:u32 = add %idx_1, 1u
+        next_iteration %93  # -> $B14
       }
     }
-    %101:array<Outer, 4> = load %a_2
-    ret %101
+    %94:array<Outer, 4> = load %a_2
+    ret %94
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 164afa6..a2f9bf9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -140,9 +140,9 @@
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x4<f16>(vec4<f16>(0.0h))))))  # %a_1: 'a'
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f16>(vec4<f16>(0.0h))))  # %a_1: 'a'
     loop [i: $B5, b: $B6, c: $B7] {  # loop_1
       $B5: {  # initializer
         next_iteration 0u  # -> $B6
@@ -154,10 +154,10 @@
             exit_loop  # loop_1
           }
         }
-        %62:u32 = mul %idx, 256u
+        %62:u32 = mul %idx, 64u
         %63:u32 = add %start_byte_offset, %62
-        %64:ptr<function, Outer, read_write> = access %a_1, %idx
-        %65:Outer = call %21, %63
+        %64:ptr<function, Inner, read_write> = access %a_1, %idx
+        %65:Inner = call %28, %63
         store %64, %65
         continue  # -> $B7
       }
@@ -166,66 +166,66 @@
         next_iteration %66  # -> $B6
       }
     }
-    %67:array<Outer, 4> = load %a_1
+    %67:array<Inner, 4> = load %a_1
     ret %67
   }
 }
-%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
   $B9: {
-    %69:array<Inner, 4> = call %24, %start_byte_offset_1
-    %70:Outer = construct %69
+    %69:mat2x4<f16> = call %32, %start_byte_offset_1
+    %70:Inner = construct %69
     ret %70
   }
 }
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+%32 = func(%start_byte_offset_2:u32):mat2x4<f16> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f16>(vec4<f16>(0.0h))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
+    %72:u32 = div %start_byte_offset_2, 16u
+    %73:ptr<uniform, vec4<u32>, read> = access %a, %72
+    %74:vec4<u32> = load %73
+    %75:vec4<f16> = bitcast %74
+    %76:u32 = add 8u, %start_byte_offset_2
+    %77:u32 = div %76, 16u
+    %78:ptr<uniform, vec4<u32>, read> = access %a, %77
+    %79:vec4<u32> = load %78
+    %80:vec4<f16> = bitcast %79
+    %81:mat2x4<f16> = construct %75, %80
+    ret %81
+  }
+}
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %83:array<Inner, 4> = call %24, %start_byte_offset_3
+    %84:Outer = construct %83
+    ret %84
+  }
+}
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x4<f16>(vec4<f16>(0.0h))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
       }
-      $B12 (%idx_1:u32): {  # body
-        %74:bool = gte %idx_1, 4u
-        if %74 [t: $B14] {  # if_2
-          $B14: {  # true
+      $B14 (%idx_1:u32): {  # body
+        %88:bool = gte %idx_1, 4u
+        if %88 [t: $B16] {  # if_2
+          $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %75:u32 = mul %idx_1, 64u
-        %76:u32 = add %start_byte_offset_2, %75
-        %77:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %78:Inner = call %28, %76
-        store %77, %78
-        continue  # -> $B13
+        %89:u32 = mul %idx_1, 256u
+        %90:u32 = add %start_byte_offset_4, %89
+        %91:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %92:Outer = call %21, %90
+        store %91, %92
+        continue  # -> $B15
       }
-      $B13: {  # continuing
-        %79:u32 = add %idx_1, 1u
-        next_iteration %79  # -> $B12
+      $B15: {  # continuing
+        %93:u32 = add %idx_1, 1u
+        next_iteration %93  # -> $B14
       }
     }
-    %80:array<Inner, 4> = load %a_2
-    ret %80
-  }
-}
-%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %82:mat2x4<f16> = call %32, %start_byte_offset_3
-    %83:Inner = construct %82
-    ret %83
-  }
-}
-%32 = func(%start_byte_offset_4:u32):mat2x4<f16> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %85:u32 = div %start_byte_offset_4, 16u
-    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
-    %87:vec4<u32> = load %86
-    %88:vec4<f16> = bitcast %87
-    %89:u32 = add 8u, %start_byte_offset_4
-    %90:u32 = div %89, 16u
-    %91:ptr<uniform, vec4<u32>, read> = access %a, %90
-    %92:vec4<u32> = load %91
-    %93:vec4<f16> = bitcast %92
-    %94:mat2x4<f16> = construct %88, %93
+    %94:array<Outer, 4> = load %a_2
     ret %94
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index f2a6d53..605ce87 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,7 +26,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -42,7 +42,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -59,15 +59,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 2, 4> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 2, 4> l_a_3_a_2_m = a_load_4(896u);
   uint2 ubo_load_4 = a[56].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const vector<float16_t, 4> l_a_3_a_2_m_1 = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
+  vector<float16_t, 4> l_a_3_a_2_m_1 = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000161F02B4D00(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 9434ec1..4ff80ff 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -98,5 +98,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000141C0C65070(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000172B788AF80(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index 0dae90a..2191909 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -20,14 +20,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 2> t = transpose(u_load(264u));
+  matrix<float16_t, 4, 2> t = transpose(u_load(264u));
   uint2 ubo_load_4 = u[1].xy;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
+  float16_t l = length(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
   uint2 ubo_load_5 = u[1].xy;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   vector<float16_t, 2> ubo_load_5_yw = vector<float16_t, 2>(f16tof32(ubo_load_5 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A084734880(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 099c04f..6c0fae9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000239C17EE810(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FDCA2E4CC0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
index eda58a1..0db95f2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -42,7 +42,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -72,3 +72,6 @@
   e(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000209B8365140(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 30632e4..7955fa7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -84,5 +84,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000261357D3190(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A86A186340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
index e458f87..21d35a0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -28,7 +28,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -54,3 +54,6 @@
   p[1].m[0] = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027FDEFDA830(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 16cfe44..e4182d9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -69,5 +69,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000293BDB32A90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002719C33B710(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
index 4a0e524..e5103ab 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -48,7 +48,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol;
 }
 
@@ -74,3 +74,6 @@
   s.Store<vector<float16_t, 4> >(136u, vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]).ywxz);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B9984E4D00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 9d4b1aa..c19af53 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -99,5 +99,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000205D62D29C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ED5CB8E490(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index b7cba96..8828364 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -32,7 +44,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_2 = ((offset + 0u)) / 4;
   const uint scalar_offset_3 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_2 / 4][scalar_offset_2 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4])};
   return tint_symbol_3;
 }
 
@@ -48,14 +60,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(264u);
@@ -70,3 +75,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DDD029A7B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 2bbb8a2..7602bc6 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -94,5 +94,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BBFEA57020(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019D9AF58FE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 8e64e6a..9fd547a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,55 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:48:24 error: binary: %23 is not in scope
-    %35:u32 = add %34, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:53:24 error: binary: %23 is not in scope
-    %41:u32 = add %40, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:64:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :54:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -106,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %52, 4u
+    %42:u32 = mul %41, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -149,135 +101,125 @@
     %16:u32 = mul 16u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:u32 = add %33, %16
-    %35:u32 = add %34, %23
-    %36:Inner = call %37, %35
-    %l_a_i_a_i:Inner = let %36
-    %39:u32 = add %10, %13
-    %40:u32 = add %39, %16
-    %41:u32 = add %40, %23
-    %42:mat2x4<f32> = call %43, %41
-    %l_a_i_a_i_m:mat2x4<f32> = let %42
-    %45:u32 = add %10, %13
-    %46:u32 = add %45, %16
-    %47:u32 = div %46, 16u
-    %48:ptr<uniform, vec4<u32>, read> = access %a, %47
-    %49:vec4<u32> = load %48
-    %50:vec4<f32> = bitcast %49
-    %l_a_i_a_i_m_i:vec4<f32> = let %50
-    %52:i32 = call %i
-    %23:u32 = mul %52, 4u
-    %53:u32 = add %10, %13
-    %54:u32 = add %53, %16
-    %55:u32 = add %54, %23
-    %56:u32 = div %55, 16u
-    %57:ptr<uniform, vec4<u32>, read> = access %a, %56
-    %58:u32 = mod %55, 16u
-    %59:u32 = div %58, 4u
-    %60:u32 = load_vector_element %57, %59
-    %61:f32 = bitcast %60
-    %l_a_i_a_i_m_i_i:f32 = let %61
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat2x4<f32> = call %32, %30
+    %l_a_i_a_i_m:mat2x4<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f32> = bitcast %38
+    %l_a_i_a_i_m_i:vec4<f32> = let %39
+    %41:i32 = call %i
+    %42:u32 = mul %41, 4u
+    %43:u32 = add %10, %13
+    %44:u32 = add %43, %16
+    %45:u32 = add %44, %42
+    %46:u32 = div %45, 16u
+    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
+    %48:u32 = mod %45, 16u
+    %49:u32 = div %48, 4u
+    %50:u32 = load_vector_element %47, %49
+    %51:f32 = bitcast %50
+    %l_a_i_a_i_m_i_i:f32 = let %51
     ret
   }
 }
-%43 = func(%start_byte_offset:u32):mat2x4<f32> {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %64:u32 = div %start_byte_offset, 16u
-    %65:ptr<uniform, vec4<u32>, read> = access %a, %64
-    %66:vec4<u32> = load %65
-    %67:vec4<f32> = bitcast %66
-    %68:u32 = add 16u, %start_byte_offset
-    %69:u32 = div %68, 16u
-    %70:ptr<uniform, vec4<u32>, read> = access %a, %69
-    %71:vec4<u32> = load %70
-    %72:vec4<f32> = bitcast %71
-    %73:mat2x4<f32> = construct %67, %72
-    ret %73
-  }
-}
-%37 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %75:mat2x4<f32> = call %43, %start_byte_offset_1
-    %76:Inner = construct %75
-    ret %76
-  }
-}
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %80:bool = gte %idx, 4u
-        if %80 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %56:bool = gte %idx, 4u
+        if %56 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %81:u32 = mul %idx, 64u
-        %82:u32 = add %start_byte_offset_2, %81
-        %83:ptr<function, Inner, read_write> = access %a_1, %idx
-        %84:Inner = call %37, %82
-        store %83, %84
-        continue  # -> $B9
+        %57:u32 = mul %idx, 256u
+        %58:u32 = add %start_byte_offset, %57
+        %59:ptr<function, Outer, read_write> = access %a_1, %idx
+        %60:Outer = call %21, %58
+        store %59, %60
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %85:u32 = add %idx, 1u
-        next_iteration %85  # -> $B8
+      $B7: {  # continuing
+        %61:u32 = add %idx, 1u
+        next_iteration %61  # -> $B6
       }
     }
-    %86:array<Inner, 4> = load %a_1
-    ret %86
+    %62:array<Outer, 4> = load %a_1
+    ret %62
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %88:array<Inner, 4> = call %31, %start_byte_offset_3
-    %89:Outer = construct %88
-    ret %89
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %64:array<Inner, 4> = call %24, %start_byte_offset_1
+    %65:Outer = construct %64
+    ret %65
   }
 }
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %93:bool = gte %idx_1, 4u
-        if %93 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %69:bool = gte %idx_1, 4u
+        if %69 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %94:u32 = mul %idx_1, 256u
-        %95:u32 = add %start_byte_offset_4, %94
-        %96:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %97:Outer = call %25, %95
-        store %96, %97
-        continue  # -> $B15
+        %70:u32 = mul %idx_1, 64u
+        %71:u32 = add %start_byte_offset_2, %70
+        %72:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %73:Inner = call %28, %71
+        store %72, %73
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %98:u32 = add %idx_1, 1u
-        next_iteration %98  # -> $B14
+      $B13: {  # continuing
+        %74:u32 = add %idx_1, 1u
+        next_iteration %74  # -> $B12
       }
     }
-    %99:array<Outer, 4> = load %a_2
-    ret %99
+    %75:array<Inner, 4> = load %a_2
+    ret %75
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %77:mat2x4<f32> = call %32, %start_byte_offset_3
+    %78:Inner = construct %77
+    ret %78
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat2x4<f32> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %80:u32 = div %start_byte_offset_4, 16u
+    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
+    %82:vec4<u32> = load %81
+    %83:vec4<f32> = bitcast %82
+    %84:u32 = add 16u, %start_byte_offset_4
+    %85:u32 = div %84, 16u
+    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
+    %87:vec4<u32> = load %86
+    %88:vec4<f32> = bitcast %87
+    %89:mat2x4<f32> = construct %83, %88
+    ret %89
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index feda416..9fd547a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -133,92 +133,92 @@
     ret
   }
 }
-%32 = func(%start_byte_offset:u32):mat2x4<f32> {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %54:u32 = div %start_byte_offset, 16u
-    %55:ptr<uniform, vec4<u32>, read> = access %a, %54
-    %56:vec4<u32> = load %55
-    %57:vec4<f32> = bitcast %56
-    %58:u32 = add 16u, %start_byte_offset
-    %59:u32 = div %58, 16u
-    %60:ptr<uniform, vec4<u32>, read> = access %a, %59
-    %61:vec4<u32> = load %60
-    %62:vec4<f32> = bitcast %61
-    %63:mat2x4<f32> = construct %57, %62
-    ret %63
-  }
-}
-%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %65:mat2x4<f32> = call %32, %start_byte_offset_1
-    %66:Inner = construct %65
-    ret %66
-  }
-}
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %70:bool = gte %idx, 4u
-        if %70 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %56:bool = gte %idx, 4u
+        if %56 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %71:u32 = mul %idx, 64u
-        %72:u32 = add %start_byte_offset_2, %71
-        %73:ptr<function, Inner, read_write> = access %a_1, %idx
-        %74:Inner = call %28, %72
-        store %73, %74
-        continue  # -> $B9
+        %57:u32 = mul %idx, 256u
+        %58:u32 = add %start_byte_offset, %57
+        %59:ptr<function, Outer, read_write> = access %a_1, %idx
+        %60:Outer = call %21, %58
+        store %59, %60
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %75:u32 = add %idx, 1u
-        next_iteration %75  # -> $B8
+      $B7: {  # continuing
+        %61:u32 = add %idx, 1u
+        next_iteration %61  # -> $B6
       }
     }
-    %76:array<Inner, 4> = load %a_1
-    ret %76
+    %62:array<Outer, 4> = load %a_1
+    ret %62
   }
 }
-%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %78:array<Inner, 4> = call %24, %start_byte_offset_3
-    %79:Outer = construct %78
-    ret %79
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %64:array<Inner, 4> = call %24, %start_byte_offset_1
+    %65:Outer = construct %64
+    ret %65
   }
 }
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat2x4<f32>(vec4<f32>(0.0f))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %83:bool = gte %idx_1, 4u
-        if %83 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %69:bool = gte %idx_1, 4u
+        if %69 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %84:u32 = mul %idx_1, 256u
-        %85:u32 = add %start_byte_offset_4, %84
-        %86:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %87:Outer = call %21, %85
-        store %86, %87
-        continue  # -> $B15
+        %70:u32 = mul %idx_1, 64u
+        %71:u32 = add %start_byte_offset_2, %70
+        %72:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %73:Inner = call %28, %71
+        store %72, %73
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %88:u32 = add %idx_1, 1u
-        next_iteration %88  # -> $B14
+      $B13: {  # continuing
+        %74:u32 = add %idx_1, 1u
+        next_iteration %74  # -> $B12
       }
     }
-    %89:array<Outer, 4> = load %a_2
+    %75:array<Inner, 4> = load %a_2
+    ret %75
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %77:mat2x4<f32> = call %32, %start_byte_offset_3
+    %78:Inner = construct %77
+    ret %78
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat2x4<f32> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %80:u32 = div %start_byte_offset_4, 16u
+    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
+    %82:vec4<u32> = load %81
+    %83:vec4<f32> = bitcast %82
+    %84:u32 = add 16u, %start_byte_offset_4
+    %85:u32 = div %84, 16u
+    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
+    %87:vec4<u32> = load %86
+    %88:vec4<f32> = bitcast %87
+    %89:mat2x4<f32> = construct %83, %88
     ret %89
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 3eff28b..aff9ccc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -28,7 +28,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -44,7 +44,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -61,23 +61,26 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 3, 2> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 3, 2> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_3 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (4u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint ubo_load_3 = a[scalar_offset_3 / 4][scalar_offset_3 % 4];
-  const vector<float16_t, 2> l_a_i_a_i_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 2> l_a_i_a_i_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (4u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027805AEAB90(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index bd94d38..37a4976 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,43 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :40:24 error: binary: %26 is not in scope
-    %25:u32 = add %24, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:66:5 note: %26 declared here
-    %26:u32 = mul %54, 2u
-    ^^^^^^^
-
-:48:24 error: binary: %26 is not in scope
-    %36:u32 = add %35, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:66:5 note: %26 declared here
-    %26:u32 = mul %54, 2u
-    ^^^^^^^
-
-:53:24 error: binary: %26 is not in scope
-    %42:u32 = add %41, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:66:5 note: %26 declared here
-    %26:u32 = mul %54, 2u
-    ^^^^^^^
-
-:66:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :60:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -96,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %26:u32 = mul %54, 2u
+    %48:u32 = mul %47, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -141,163 +105,157 @@
     %l_a:array<Outer, 4> = let %17
     %20:Outer = call %21, %10
     %l_a_i:Outer = let %20
-    %23:u32 = add %10, %13
-    %24:u32 = add %23, %16
-    %25:u32 = add %24, %26
-    %27:array<Inner, 4> = call %28, %25
-    %l_a_i_a:array<Inner, 4> = let %27
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:Inner = call %32, %30
-    %l_a_i_a_i:Inner = let %31
+    %31:mat3x2<f16> = call %32, %30
+    %l_a_i_a_i_m:mat3x2<f16> = let %31
     %34:u32 = add %10, %13
     %35:u32 = add %34, %16
-    %36:u32 = add %35, %26
-    %37:mat3x2<f16> = call %38, %36
-    %l_a_i_a_i_m:mat3x2<f16> = let %37
-    %40:u32 = add %10, %13
-    %41:u32 = add %40, %16
-    %42:u32 = add %41, %26
-    %43:u32 = div %42, 16u
-    %44:ptr<uniform, vec4<u32>, read> = access %a, %43
-    %45:u32 = mod %42, 16u
-    %46:u32 = div %45, 4u
-    %47:vec4<u32> = load %44
-    %48:u32 = swizzle %47, z
-    %49:u32 = swizzle %47, x
-    %50:bool = eq %46, 2u
-    %51:u32 = hlsl.ternary %49, %48, %50
-    %52:vec2<f16> = bitcast %51
-    %l_a_i_a_i_m_i:vec2<f16> = let %52
-    %54:i32 = call %i
-    %26:u32 = mul %54, 2u
-    %55:u32 = add %10, %13
-    %56:u32 = add %55, %16
-    %57:u32 = add %56, %26
-    %58:u32 = div %57, 16u
-    %59:ptr<uniform, vec4<u32>, read> = access %a, %58
-    %60:u32 = mod %57, 16u
-    %61:u32 = div %60, 4u
-    %62:u32 = load_vector_element %59, %61
-    %63:u32 = mod %57, 4u
-    %64:bool = eq %63, 0u
-    %65:u32 = hlsl.ternary 16u, 0u, %64
-    %66:u32 = shr %62, %65
-    %67:f32 = hlsl.f16tof32 %66
-    %68:f16 = convert %67
-    %l_a_i_a_i_m_i_i:f16 = let %68
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:u32 = mod %35, 16u
+    %39:u32 = div %38, 4u
+    %40:vec4<u32> = load %37
+    %41:u32 = swizzle %40, z
+    %42:u32 = swizzle %40, x
+    %43:bool = eq %39, 2u
+    %44:u32 = hlsl.ternary %42, %41, %43
+    %45:vec2<f16> = bitcast %44
+    %l_a_i_a_i_m_i:vec2<f16> = let %45
+    %47:i32 = call %i
+    %48:u32 = mul %47, 2u
+    %49:u32 = add %10, %13
+    %50:u32 = add %49, %16
+    %51:u32 = add %50, %48
+    %52:u32 = div %51, 16u
+    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
+    %54:u32 = mod %51, 16u
+    %55:u32 = div %54, 4u
+    %56:u32 = load_vector_element %53, %55
+    %57:u32 = mod %51, 4u
+    %58:bool = eq %57, 0u
+    %59:u32 = hlsl.ternary 16u, 0u, %58
+    %60:u32 = shr %56, %59
+    %61:f32 = hlsl.f16tof32 %60
+    %62:f16 = convert %61
+    %l_a_i_a_i_m_i_i:f16 = let %62
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %71:array<Inner, 4> = call %28, %start_byte_offset
-    %72:Outer = construct %71
-    ret %72
-  }
-}
-%28 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %76:bool = gte %idx, 4u
-        if %76 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %67:bool = gte %idx, 4u
+        if %67 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %77:u32 = mul %idx, 64u
-        %78:u32 = add %start_byte_offset_1, %77
-        %79:ptr<function, Inner, read_write> = access %a_1, %idx
-        %80:Inner = call %32, %78
-        store %79, %80
-        continue  # -> $B8
+        %68:u32 = mul %idx, 256u
+        %69:u32 = add %start_byte_offset, %68
+        %70:ptr<function, Outer, read_write> = access %a_1, %idx
+        %71:Outer = call %21, %69
+        store %70, %71
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %81:u32 = add %idx, 1u
-        next_iteration %81  # -> $B7
+      $B7: {  # continuing
+        %72:u32 = add %idx, 1u
+        next_iteration %72  # -> $B6
       }
     }
-    %82:array<Inner, 4> = load %a_1
-    ret %82
+    %73:array<Outer, 4> = load %a_1
+    ret %73
   }
 }
-%32 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %75:array<Inner, 4> = call %24, %start_byte_offset_1
+    %76:Outer = construct %75
+    ret %76
+  }
+}
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %84:mat3x2<f16> = call %38, %start_byte_offset_2
-    %85:Inner = construct %84
-    ret %85
-  }
-}
-%38 = func(%start_byte_offset_3:u32):mat3x2<f16> {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %87:u32 = div %start_byte_offset_3, 16u
-    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
-    %89:u32 = mod %start_byte_offset_3, 16u
-    %90:u32 = div %89, 4u
-    %91:vec4<u32> = load %88
-    %92:u32 = swizzle %91, z
-    %93:u32 = swizzle %91, x
-    %94:bool = eq %90, 2u
-    %95:u32 = hlsl.ternary %93, %92, %94
-    %96:vec2<f16> = bitcast %95
-    %97:u32 = add 4u, %start_byte_offset_3
-    %98:u32 = div %97, 16u
-    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
-    %100:u32 = mod %97, 16u
-    %101:u32 = div %100, 4u
-    %102:vec4<u32> = load %99
-    %103:u32 = swizzle %102, z
-    %104:u32 = swizzle %102, x
-    %105:bool = eq %101, 2u
-    %106:u32 = hlsl.ternary %104, %103, %105
-    %107:vec2<f16> = bitcast %106
-    %108:u32 = add 8u, %start_byte_offset_3
-    %109:u32 = div %108, 16u
-    %110:ptr<uniform, vec4<u32>, read> = access %a, %109
-    %111:u32 = mod %108, 16u
-    %112:u32 = div %111, 4u
-    %113:vec4<u32> = load %110
-    %114:u32 = swizzle %113, z
-    %115:u32 = swizzle %113, x
-    %116:bool = eq %112, 2u
-    %117:u32 = hlsl.ternary %115, %114, %116
-    %118:vec2<f16> = bitcast %117
-    %119:mat3x2<f16> = construct %96, %107, %118
-    ret %119
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %123:bool = gte %idx_1, 4u
-        if %123 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %80:bool = gte %idx_1, 4u
+        if %80 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %124:u32 = mul %idx_1, 256u
-        %125:u32 = add %start_byte_offset_4, %124
-        %126:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %127:Outer = call %21, %125
-        store %126, %127
-        continue  # -> $B15
+        %81:u32 = mul %idx_1, 64u
+        %82:u32 = add %start_byte_offset_2, %81
+        %83:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %84:Inner = call %28, %82
+        store %83, %84
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %128:u32 = add %idx_1, 1u
-        next_iteration %128  # -> $B14
+      $B13: {  # continuing
+        %85:u32 = add %idx_1, 1u
+        next_iteration %85  # -> $B12
       }
     }
-    %129:array<Outer, 4> = load %a_2
-    ret %129
+    %86:array<Inner, 4> = load %a_2
+    ret %86
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %88:mat3x2<f16> = call %32, %start_byte_offset_3
+    %89:Inner = construct %88
+    ret %89
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat3x2<f16> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %91:u32 = div %start_byte_offset_4, 16u
+    %92:ptr<uniform, vec4<u32>, read> = access %a, %91
+    %93:u32 = mod %start_byte_offset_4, 16u
+    %94:u32 = div %93, 4u
+    %95:vec4<u32> = load %92
+    %96:u32 = swizzle %95, z
+    %97:u32 = swizzle %95, x
+    %98:bool = eq %94, 2u
+    %99:u32 = hlsl.ternary %97, %96, %98
+    %100:vec2<f16> = bitcast %99
+    %101:u32 = add 4u, %start_byte_offset_4
+    %102:u32 = div %101, 16u
+    %103:ptr<uniform, vec4<u32>, read> = access %a, %102
+    %104:u32 = mod %101, 16u
+    %105:u32 = div %104, 4u
+    %106:vec4<u32> = load %103
+    %107:u32 = swizzle %106, z
+    %108:u32 = swizzle %106, x
+    %109:bool = eq %105, 2u
+    %110:u32 = hlsl.ternary %108, %107, %109
+    %111:vec2<f16> = bitcast %110
+    %112:u32 = add 8u, %start_byte_offset_4
+    %113:u32 = div %112, 16u
+    %114:ptr<uniform, vec4<u32>, read> = access %a, %113
+    %115:u32 = mod %112, 16u
+    %116:u32 = div %115, 4u
+    %117:vec4<u32> = load %114
+    %118:u32 = swizzle %117, z
+    %119:u32 = swizzle %117, x
+    %120:bool = eq %116, 2u
+    %121:u32 = hlsl.ternary %119, %118, %120
+    %122:vec2<f16> = bitcast %121
+    %123:mat3x2<f16> = construct %100, %111, %122
+    ret %123
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 3dbc5f6..37a4976 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -146,9 +146,9 @@
     ret
   }
 }
-%24 = func(%start_byte_offset:u32):array<Inner, 4> {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))))  # %a_1: 'a'
     loop [i: $B5, b: $B6, c: $B7] {  # loop_1
       $B5: {  # initializer
         next_iteration 0u  # -> $B6
@@ -160,10 +160,10 @@
             exit_loop  # loop_1
           }
         }
-        %68:u32 = mul %idx, 64u
+        %68:u32 = mul %idx, 256u
         %69:u32 = add %start_byte_offset, %68
-        %70:ptr<function, Inner, read_write> = access %a_1, %idx
-        %71:Inner = call %28, %69
+        %70:ptr<function, Outer, read_write> = access %a_1, %idx
+        %71:Outer = call %21, %69
         store %70, %71
         continue  # -> $B7
       }
@@ -172,89 +172,89 @@
         next_iteration %72  # -> $B6
       }
     }
-    %73:array<Inner, 4> = load %a_1
+    %73:array<Outer, 4> = load %a_1
     ret %73
   }
 }
-%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
   $B9: {
-    %75:mat3x2<f16> = call %32, %start_byte_offset_1
-    %76:Inner = construct %75
+    %75:array<Inner, 4> = call %24, %start_byte_offset_1
+    %76:Outer = construct %75
     ret %76
   }
 }
-%32 = func(%start_byte_offset_2:u32):mat3x2<f16> {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %78:u32 = div %start_byte_offset_2, 16u
-    %79:ptr<uniform, vec4<u32>, read> = access %a, %78
-    %80:u32 = mod %start_byte_offset_2, 16u
-    %81:u32 = div %80, 4u
-    %82:vec4<u32> = load %79
-    %83:u32 = swizzle %82, z
-    %84:u32 = swizzle %82, x
-    %85:bool = eq %81, 2u
-    %86:u32 = hlsl.ternary %84, %83, %85
-    %87:vec2<f16> = bitcast %86
-    %88:u32 = add 4u, %start_byte_offset_2
-    %89:u32 = div %88, 16u
-    %90:ptr<uniform, vec4<u32>, read> = access %a, %89
-    %91:u32 = mod %88, 16u
-    %92:u32 = div %91, 4u
-    %93:vec4<u32> = load %90
-    %94:u32 = swizzle %93, z
-    %95:u32 = swizzle %93, x
-    %96:bool = eq %92, 2u
-    %97:u32 = hlsl.ternary %95, %94, %96
-    %98:vec2<f16> = bitcast %97
-    %99:u32 = add 8u, %start_byte_offset_2
-    %100:u32 = div %99, 16u
-    %101:ptr<uniform, vec4<u32>, read> = access %a, %100
-    %102:u32 = mod %99, 16u
-    %103:u32 = div %102, 4u
-    %104:vec4<u32> = load %101
-    %105:u32 = swizzle %104, z
-    %106:u32 = swizzle %104, x
-    %107:bool = eq %103, 2u
-    %108:u32 = hlsl.ternary %106, %105, %107
-    %109:vec2<f16> = bitcast %108
-    %110:mat3x2<f16> = construct %87, %98, %109
-    ret %110
-  }
-}
-%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %112:array<Inner, 4> = call %24, %start_byte_offset_3
-    %113:Outer = construct %112
-    ret %113
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f16>(vec2<f16>(0.0h))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %117:bool = gte %idx_1, 4u
-        if %117 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %80:bool = gte %idx_1, 4u
+        if %80 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %118:u32 = mul %idx_1, 256u
-        %119:u32 = add %start_byte_offset_4, %118
-        %120:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %121:Outer = call %21, %119
-        store %120, %121
-        continue  # -> $B15
+        %81:u32 = mul %idx_1, 64u
+        %82:u32 = add %start_byte_offset_2, %81
+        %83:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %84:Inner = call %28, %82
+        store %83, %84
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %122:u32 = add %idx_1, 1u
-        next_iteration %122  # -> $B14
+      $B13: {  # continuing
+        %85:u32 = add %idx_1, 1u
+        next_iteration %85  # -> $B12
       }
     }
-    %123:array<Outer, 4> = load %a_2
+    %86:array<Inner, 4> = load %a_2
+    ret %86
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %88:mat3x2<f16> = call %32, %start_byte_offset_3
+    %89:Inner = construct %88
+    ret %89
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat3x2<f16> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %91:u32 = div %start_byte_offset_4, 16u
+    %92:ptr<uniform, vec4<u32>, read> = access %a, %91
+    %93:u32 = mod %start_byte_offset_4, 16u
+    %94:u32 = div %93, 4u
+    %95:vec4<u32> = load %92
+    %96:u32 = swizzle %95, z
+    %97:u32 = swizzle %95, x
+    %98:bool = eq %94, 2u
+    %99:u32 = hlsl.ternary %97, %96, %98
+    %100:vec2<f16> = bitcast %99
+    %101:u32 = add 4u, %start_byte_offset_4
+    %102:u32 = div %101, 16u
+    %103:ptr<uniform, vec4<u32>, read> = access %a, %102
+    %104:u32 = mod %101, 16u
+    %105:u32 = div %104, 4u
+    %106:vec4<u32> = load %103
+    %107:u32 = swizzle %106, z
+    %108:u32 = swizzle %106, x
+    %109:bool = eq %105, 2u
+    %110:u32 = hlsl.ternary %108, %107, %109
+    %111:vec2<f16> = bitcast %110
+    %112:u32 = add 8u, %start_byte_offset_4
+    %113:u32 = div %112, 16u
+    %114:ptr<uniform, vec4<u32>, read> = access %a, %113
+    %115:u32 = mod %112, 16u
+    %116:u32 = div %115, 4u
+    %117:vec4<u32> = load %114
+    %118:u32 = swizzle %117, z
+    %119:u32 = swizzle %117, x
+    %120:bool = eq %116, 2u
+    %121:u32 = hlsl.ternary %119, %118, %120
+    %122:vec2<f16> = bitcast %121
+    %123:mat3x2<f16> = construct %100, %111, %122
     ret %123
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index ef9462a..e6c0b64 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -22,7 +22,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -38,7 +38,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -55,13 +55,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 3, 2> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 3, 2> l_a_3_a_2_m = a_load_4(896u);
   uint ubo_load_3 = a[56].y;
-  const vector<float16_t, 2> l_a_3_a_2_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].y) & 0xFFFF)));
+  vector<float16_t, 2> l_a_3_a_2_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].y) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019207DF3EB0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 5675ced..fd53dda 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -98,5 +98,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D906B70A90(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B3172FBDF0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index 62d2952..9fe5174 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -16,10 +16,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 3> t = transpose(u_load(260u));
+  matrix<float16_t, 2, 3> t = transpose(u_load(260u));
   uint ubo_load_3 = u[0].z;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx);
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx);
   uint ubo_load_4 = u[0].z;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214826E5210(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index d938dec..60a9e49 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D24BC50F10(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029022FCD140(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl
index f1ddb7e..044bdd9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -38,7 +38,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -64,3 +64,6 @@
   e(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000298D55C3340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 42639d2..cbd3b27 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -84,5 +84,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000207F5A354F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025AF19BABB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl
index 3b3d247..7eb9c12 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -24,7 +24,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -48,3 +48,6 @@
   p[1].m[0] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015D24FE3FF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index d4ee2ed..1f0c5f8 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -69,5 +69,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015BCC1DE320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002842A234900(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl
index 824671b..21a0452 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -45,7 +45,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -69,3 +69,6 @@
   s.Store<vector<float16_t, 2> >(132u, vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027FB6374CB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 15d897b..bcf8f34 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -100,5 +100,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021089266F00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ED316D6340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 47c2d5e..32d6332 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -28,7 +40,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol_3;
 }
 
@@ -44,14 +56,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(260u);
@@ -64,3 +69,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000296092EB720(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 2782fe1..856b409 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -94,5 +94,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A007FA5D00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F535807820(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index b1c4947..56ec61a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,55 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:45:24 error: binary: %23 is not in scope
-    %32:u32 = add %31, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:50:24 error: binary: %23 is not in scope
-    %38:u32 = add %37, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:55:24 error: binary: %23 is not in scope
-    %44:u32 = add %43, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 4u
-    ^^^^^^^
-
-:68:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :60:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -106,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %56, 4u
+    %48:u32 = mul %47, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -149,162 +101,154 @@
     %16:u32 = mul 8u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:array<Inner, 4> = call %28, %10
-    %l_a_i_a:array<Inner, 4> = let %27
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:u32 = add %30, %16
-    %32:u32 = add %31, %23
-    %33:Inner = call %34, %32
-    %l_a_i_a_i:Inner = let %33
-    %36:u32 = add %10, %13
-    %37:u32 = add %36, %16
-    %38:u32 = add %37, %23
-    %39:mat3x2<f32> = call %40, %38
-    %l_a_i_a_i_m:mat3x2<f32> = let %39
-    %42:u32 = add %10, %13
-    %43:u32 = add %42, %16
-    %44:u32 = add %43, %23
-    %45:u32 = div %44, 16u
-    %46:ptr<uniform, vec4<u32>, read> = access %a, %45
-    %47:u32 = mod %44, 16u
-    %48:u32 = div %47, 4u
-    %49:vec4<u32> = load %46
-    %50:vec2<u32> = swizzle %49, zw
-    %51:vec2<u32> = swizzle %49, xy
-    %52:bool = eq %48, 2u
-    %53:vec2<u32> = hlsl.ternary %51, %50, %52
-    %54:vec2<f32> = bitcast %53
-    %l_a_i_a_i_m_i:vec2<f32> = let %54
-    %56:i32 = call %i
-    %23:u32 = mul %56, 4u
-    %57:u32 = add %10, %13
-    %58:u32 = add %57, %16
-    %59:u32 = add %58, %23
-    %60:u32 = div %59, 16u
-    %61:ptr<uniform, vec4<u32>, read> = access %a, %60
-    %62:u32 = mod %59, 16u
-    %63:u32 = div %62, 4u
-    %64:u32 = load_vector_element %61, %63
-    %65:f32 = bitcast %64
-    %l_a_i_a_i_m_i_i:f32 = let %65
+    %31:mat3x2<f32> = call %32, %30
+    %l_a_i_a_i_m:mat3x2<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:u32 = mod %35, 16u
+    %39:u32 = div %38, 4u
+    %40:vec4<u32> = load %37
+    %41:vec2<u32> = swizzle %40, zw
+    %42:vec2<u32> = swizzle %40, xy
+    %43:bool = eq %39, 2u
+    %44:vec2<u32> = hlsl.ternary %42, %41, %43
+    %45:vec2<f32> = bitcast %44
+    %l_a_i_a_i_m_i:vec2<f32> = let %45
+    %47:i32 = call %i
+    %48:u32 = mul %47, 4u
+    %49:u32 = add %10, %13
+    %50:u32 = add %49, %16
+    %51:u32 = add %50, %48
+    %52:u32 = div %51, 16u
+    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
+    %54:u32 = mod %51, 16u
+    %55:u32 = div %54, 4u
+    %56:u32 = load_vector_element %53, %55
+    %57:f32 = bitcast %56
+    %l_a_i_a_i_m_i_i:f32 = let %57
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%21 = func(%start_byte_offset:u32):Outer {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x2<f32>(vec2<f32>(0.0f))))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
+    %60:array<Inner, 4> = call %24, %start_byte_offset
+    %61:Outer = construct %60
+    ret %61
+  }
+}
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f32>(vec2<f32>(0.0f))))  # %a_1: 'a'
+    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
+      $B6: {  # initializer
+        next_iteration 0u  # -> $B7
       }
-      $B6 (%idx:u32): {  # body
-        %70:bool = gte %idx, 4u
-        if %70 [t: $B8] {  # if_1
-          $B8: {  # true
+      $B7 (%idx:u32): {  # body
+        %65:bool = gte %idx, 4u
+        if %65 [t: $B9] {  # if_1
+          $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %71:u32 = mul %idx, 256u
-        %72:u32 = add %start_byte_offset, %71
-        %73:ptr<function, Outer, read_write> = access %a_1, %idx
-        %74:Outer = call %25, %72
-        store %73, %74
-        continue  # -> $B7
+        %66:u32 = mul %idx, 64u
+        %67:u32 = add %start_byte_offset_1, %66
+        %68:ptr<function, Inner, read_write> = access %a_1, %idx
+        %69:Inner = call %28, %67
+        store %68, %69
+        continue  # -> $B8
       }
-      $B7: {  # continuing
-        %75:u32 = add %idx, 1u
-        next_iteration %75  # -> $B6
+      $B8: {  # continuing
+        %70:u32 = add %idx, 1u
+        next_iteration %70  # -> $B7
       }
     }
-    %76:array<Outer, 4> = load %a_1
-    ret %76
+    %71:array<Inner, 4> = load %a_1
+    ret %71
   }
 }
-%25 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %78:array<Inner, 4> = call %28, %start_byte_offset_1
-    %79:Outer = construct %78
-    ret %79
-  }
-}
-%28 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f32>(vec2<f32>(0.0f))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
+    %73:mat3x2<f32> = call %32, %start_byte_offset_2
+    %74:Inner = construct %73
+    ret %74
+  }
+}
+%32 = func(%start_byte_offset_3:u32):mat3x2<f32> {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %76:u32 = div %start_byte_offset_3, 16u
+    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
+    %78:u32 = mod %start_byte_offset_3, 16u
+    %79:u32 = div %78, 4u
+    %80:vec4<u32> = load %77
+    %81:vec2<u32> = swizzle %80, zw
+    %82:vec2<u32> = swizzle %80, xy
+    %83:bool = eq %79, 2u
+    %84:vec2<u32> = hlsl.ternary %82, %81, %83
+    %85:vec2<f32> = bitcast %84
+    %86:u32 = add 8u, %start_byte_offset_3
+    %87:u32 = div %86, 16u
+    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
+    %89:u32 = mod %86, 16u
+    %90:u32 = div %89, 4u
+    %91:vec4<u32> = load %88
+    %92:vec2<u32> = swizzle %91, zw
+    %93:vec2<u32> = swizzle %91, xy
+    %94:bool = eq %90, 2u
+    %95:vec2<u32> = hlsl.ternary %93, %92, %94
+    %96:vec2<f32> = bitcast %95
+    %97:u32 = add 16u, %start_byte_offset_3
+    %98:u32 = div %97, 16u
+    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
+    %100:u32 = mod %97, 16u
+    %101:u32 = div %100, 4u
+    %102:vec4<u32> = load %99
+    %103:vec2<u32> = swizzle %102, zw
+    %104:vec2<u32> = swizzle %102, xy
+    %105:bool = eq %101, 2u
+    %106:vec2<u32> = hlsl.ternary %104, %103, %105
+    %107:vec2<f32> = bitcast %106
+    %108:mat3x2<f32> = construct %85, %96, %107
+    ret %108
+  }
+}
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x2<f32>(vec2<f32>(0.0f))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
       }
-      $B12 (%idx_1:u32): {  # body
-        %83:bool = gte %idx_1, 4u
-        if %83 [t: $B14] {  # if_2
-          $B14: {  # true
+      $B14 (%idx_1:u32): {  # body
+        %112:bool = gte %idx_1, 4u
+        if %112 [t: $B16] {  # if_2
+          $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %84:u32 = mul %idx_1, 64u
-        %85:u32 = add %start_byte_offset_2, %84
-        %86:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %87:Inner = call %34, %85
-        store %86, %87
-        continue  # -> $B13
+        %113:u32 = mul %idx_1, 256u
+        %114:u32 = add %start_byte_offset_4, %113
+        %115:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %116:Outer = call %21, %114
+        store %115, %116
+        continue  # -> $B15
       }
-      $B13: {  # continuing
-        %88:u32 = add %idx_1, 1u
-        next_iteration %88  # -> $B12
+      $B15: {  # continuing
+        %117:u32 = add %idx_1, 1u
+        next_iteration %117  # -> $B14
       }
     }
-    %89:array<Inner, 4> = load %a_2
-    ret %89
-  }
-}
-%34 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %91:mat3x2<f32> = call %40, %start_byte_offset_3
-    %92:Inner = construct %91
-    ret %92
-  }
-}
-%40 = func(%start_byte_offset_4:u32):mat3x2<f32> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %94:u32 = div %start_byte_offset_4, 16u
-    %95:ptr<uniform, vec4<u32>, read> = access %a, %94
-    %96:u32 = mod %start_byte_offset_4, 16u
-    %97:u32 = div %96, 4u
-    %98:vec4<u32> = load %95
-    %99:vec2<u32> = swizzle %98, zw
-    %100:vec2<u32> = swizzle %98, xy
-    %101:bool = eq %97, 2u
-    %102:vec2<u32> = hlsl.ternary %100, %99, %101
-    %103:vec2<f32> = bitcast %102
-    %104:u32 = add 8u, %start_byte_offset_4
-    %105:u32 = div %104, 16u
-    %106:ptr<uniform, vec4<u32>, read> = access %a, %105
-    %107:u32 = mod %104, 16u
-    %108:u32 = div %107, 4u
-    %109:vec4<u32> = load %106
-    %110:vec2<u32> = swizzle %109, zw
-    %111:vec2<u32> = swizzle %109, xy
-    %112:bool = eq %108, 2u
-    %113:vec2<u32> = hlsl.ternary %111, %110, %112
-    %114:vec2<f32> = bitcast %113
-    %115:u32 = add 16u, %start_byte_offset_4
-    %116:u32 = div %115, 16u
-    %117:ptr<uniform, vec4<u32>, read> = access %a, %116
-    %118:u32 = mod %115, 16u
-    %119:u32 = div %118, 4u
-    %120:vec4<u32> = load %117
-    %121:vec2<u32> = swizzle %120, zw
-    %122:vec2<u32> = swizzle %120, xy
-    %123:bool = eq %119, 2u
-    %124:vec2<u32> = hlsl.ternary %122, %121, %123
-    %125:vec2<f32> = bitcast %124
-    %126:mat3x2<f32> = construct %103, %114, %125
-    ret %126
+    %118:array<Outer, 4> = load %a_2
+    ret %118
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 4693ca1..ce65b77 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -139,78 +139,78 @@
     ret
   }
 }
-%28 = func(%start_byte_offset:u32):Inner {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
-    %60:mat3x2<f32> = call %32, %start_byte_offset
-    %61:Inner = construct %60
-    ret %61
-  }
-}
-%32 = func(%start_byte_offset_1:u32):mat3x2<f32> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %63:u32 = div %start_byte_offset_1, 16u
-    %64:ptr<uniform, vec4<u32>, read> = access %a, %63
-    %65:u32 = mod %start_byte_offset_1, 16u
-    %66:u32 = div %65, 4u
-    %67:vec4<u32> = load %64
-    %68:vec2<u32> = swizzle %67, zw
-    %69:vec2<u32> = swizzle %67, xy
-    %70:bool = eq %66, 2u
-    %71:vec2<u32> = hlsl.ternary %69, %68, %70
-    %72:vec2<f32> = bitcast %71
-    %73:u32 = add 8u, %start_byte_offset_1
-    %74:u32 = div %73, 16u
-    %75:ptr<uniform, vec4<u32>, read> = access %a, %74
-    %76:u32 = mod %73, 16u
-    %77:u32 = div %76, 4u
-    %78:vec4<u32> = load %75
-    %79:vec2<u32> = swizzle %78, zw
-    %80:vec2<u32> = swizzle %78, xy
-    %81:bool = eq %77, 2u
-    %82:vec2<u32> = hlsl.ternary %80, %79, %81
-    %83:vec2<f32> = bitcast %82
-    %84:u32 = add 16u, %start_byte_offset_1
-    %85:u32 = div %84, 16u
-    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
-    %87:u32 = mod %84, 16u
-    %88:u32 = div %87, 4u
-    %89:vec4<u32> = load %86
-    %90:vec2<u32> = swizzle %89, zw
-    %91:vec2<u32> = swizzle %89, xy
-    %92:bool = eq %88, 2u
-    %93:vec2<u32> = hlsl.ternary %91, %90, %92
-    %94:vec2<f32> = bitcast %93
-    %95:mat3x2<f32> = construct %72, %83, %94
-    ret %95
-  }
-}
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x2<f32>(vec2<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %99:bool = gte %idx, 4u
-        if %99 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %62:bool = gte %idx, 4u
+        if %62 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %100:u32 = mul %idx, 64u
-        %101:u32 = add %start_byte_offset_2, %100
-        %102:ptr<function, Inner, read_write> = access %a_1, %idx
-        %103:Inner = call %28, %101
-        store %102, %103
-        continue  # -> $B9
+        %63:u32 = mul %idx, 64u
+        %64:u32 = add %start_byte_offset, %63
+        %65:ptr<function, Inner, read_write> = access %a_1, %idx
+        %66:Inner = call %28, %64
+        store %65, %66
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %104:u32 = add %idx, 1u
-        next_iteration %104  # -> $B8
+      $B7: {  # continuing
+        %67:u32 = add %idx, 1u
+        next_iteration %67  # -> $B6
       }
     }
-    %105:array<Inner, 4> = load %a_1
+    %68:array<Inner, 4> = load %a_1
+    ret %68
+  }
+}
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %70:mat3x2<f32> = call %32, %start_byte_offset_1
+    %71:Inner = construct %70
+    ret %71
+  }
+}
+%32 = func(%start_byte_offset_2:u32):mat3x2<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %73:u32 = div %start_byte_offset_2, 16u
+    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
+    %75:u32 = mod %start_byte_offset_2, 16u
+    %76:u32 = div %75, 4u
+    %77:vec4<u32> = load %74
+    %78:vec2<u32> = swizzle %77, zw
+    %79:vec2<u32> = swizzle %77, xy
+    %80:bool = eq %76, 2u
+    %81:vec2<u32> = hlsl.ternary %79, %78, %80
+    %82:vec2<f32> = bitcast %81
+    %83:u32 = add 8u, %start_byte_offset_2
+    %84:u32 = div %83, 16u
+    %85:ptr<uniform, vec4<u32>, read> = access %a, %84
+    %86:u32 = mod %83, 16u
+    %87:u32 = div %86, 4u
+    %88:vec4<u32> = load %85
+    %89:vec2<u32> = swizzle %88, zw
+    %90:vec2<u32> = swizzle %88, xy
+    %91:bool = eq %87, 2u
+    %92:vec2<u32> = hlsl.ternary %90, %89, %91
+    %93:vec2<f32> = bitcast %92
+    %94:u32 = add 16u, %start_byte_offset_2
+    %95:u32 = div %94, 16u
+    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
+    %97:u32 = mod %94, 16u
+    %98:u32 = div %97, 4u
+    %99:vec4<u32> = load %96
+    %100:vec2<u32> = swizzle %99, zw
+    %101:vec2<u32> = swizzle %99, xy
+    %102:bool = eq %98, 2u
+    %103:vec2<u32> = hlsl.ternary %101, %100, %102
+    %104:vec2<f32> = bitcast %103
+    %105:mat3x2<f32> = construct %82, %93, %104
     ret %105
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index a1f09a2..57dd8d2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -37,7 +37,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -53,7 +53,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -70,26 +70,29 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 3, 3> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 3, 3> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_3 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (8u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint4 ubo_load_7 = a[scalar_offset_3 / 4];
   uint2 ubo_load_6 = ((scalar_offset_3 & 2) ? ubo_load_7.zw : ubo_load_7.xy);
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const vector<float16_t, 3> l_a_i_a_i_m_i = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 3> l_a_i_a_i_m_i = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (8u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000205D240B740(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 31807ed..b7fdeb2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,43 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:61:5 note: %23 declared here
-    %23:u32 = mul %49, 2u
-    ^^^^^^^
-
-:48:24 error: binary: %23 is not in scope
-    %36:u32 = add %35, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:61:5 note: %23 declared here
-    %23:u32 = mul %49, 2u
-    ^^^^^^^
-
-:53:24 error: binary: %23 is not in scope
-    %42:u32 = add %41, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:61:5 note: %23 declared here
-    %23:u32 = mul %49, 2u
-    ^^^^^^^
-
-:61:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :55:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -96,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %49, 2u
+    %43:u32 = mul %42, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -139,115 +103,109 @@
     %16:u32 = mul 8u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:array<Inner, 4> = call %28, %10
-    %l_a_i_a:array<Inner, 4> = let %27
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:Inner = call %32, %30
-    %l_a_i_a_i:Inner = let %31
+    %31:mat3x3<f16> = call %32, %30
+    %l_a_i_a_i_m:mat3x3<f16> = let %31
     %34:u32 = add %10, %13
     %35:u32 = add %34, %16
-    %36:u32 = add %35, %23
-    %37:mat3x3<f16> = call %38, %36
-    %l_a_i_a_i_m:mat3x3<f16> = let %37
-    %40:u32 = add %10, %13
-    %41:u32 = add %40, %16
-    %42:u32 = add %41, %23
-    %43:u32 = div %42, 16u
-    %44:ptr<uniform, vec4<u32>, read> = access %a, %43
-    %45:vec4<u32> = load %44
-    %46:vec4<f16> = bitcast %45
-    %47:vec3<f16> = swizzle %46, xyz
-    %l_a_i_a_i_m_i:vec3<f16> = let %47
-    %49:i32 = call %i
-    %23:u32 = mul %49, 2u
-    %50:u32 = add %10, %13
-    %51:u32 = add %50, %16
-    %52:u32 = add %51, %23
-    %53:u32 = div %52, 16u
-    %54:ptr<uniform, vec4<u32>, read> = access %a, %53
-    %55:u32 = mod %52, 16u
-    %56:u32 = div %55, 4u
-    %57:u32 = load_vector_element %54, %56
-    %58:u32 = mod %52, 4u
-    %59:bool = eq %58, 0u
-    %60:u32 = hlsl.ternary 16u, 0u, %59
-    %61:u32 = shr %57, %60
-    %62:f32 = hlsl.f16tof32 %61
-    %63:f16 = convert %62
-    %l_a_i_a_i_m_i_i:f16 = let %63
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f16> = bitcast %38
+    %40:vec3<f16> = swizzle %39, xyz
+    %l_a_i_a_i_m_i:vec3<f16> = let %40
+    %42:i32 = call %i
+    %43:u32 = mul %42, 2u
+    %44:u32 = add %10, %13
+    %45:u32 = add %44, %16
+    %46:u32 = add %45, %43
+    %47:u32 = div %46, 16u
+    %48:ptr<uniform, vec4<u32>, read> = access %a, %47
+    %49:u32 = mod %46, 16u
+    %50:u32 = div %49, 4u
+    %51:u32 = load_vector_element %48, %50
+    %52:u32 = mod %46, 4u
+    %53:bool = eq %52, 0u
+    %54:u32 = hlsl.ternary 16u, 0u, %53
+    %55:u32 = shr %51, %54
+    %56:f32 = hlsl.f16tof32 %55
+    %57:f16 = convert %56
+    %l_a_i_a_i_m_i_i:f16 = let %57
     ret
   }
 }
-%28 = func(%start_byte_offset:u32):array<Inner, 4> {
+%21 = func(%start_byte_offset:u32):Outer {
   $B4: {
+    %60:array<Inner, 4> = call %24, %start_byte_offset
+    %61:Outer = construct %60
+    ret %61
+  }
+}
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x3<f16>(vec3<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
+    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
+      $B6: {  # initializer
+        next_iteration 0u  # -> $B7
       }
-      $B6 (%idx:u32): {  # body
-        %68:bool = gte %idx, 4u
-        if %68 [t: $B8] {  # if_1
-          $B8: {  # true
+      $B7 (%idx:u32): {  # body
+        %65:bool = gte %idx, 4u
+        if %65 [t: $B9] {  # if_1
+          $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %69:u32 = mul %idx, 64u
-        %70:u32 = add %start_byte_offset, %69
-        %71:ptr<function, Inner, read_write> = access %a_1, %idx
-        %72:Inner = call %32, %70
-        store %71, %72
-        continue  # -> $B7
+        %66:u32 = mul %idx, 64u
+        %67:u32 = add %start_byte_offset_1, %66
+        %68:ptr<function, Inner, read_write> = access %a_1, %idx
+        %69:Inner = call %28, %67
+        store %68, %69
+        continue  # -> $B8
       }
-      $B7: {  # continuing
-        %73:u32 = add %idx, 1u
-        next_iteration %73  # -> $B6
+      $B8: {  # continuing
+        %70:u32 = add %idx, 1u
+        next_iteration %70  # -> $B7
       }
     }
-    %74:array<Inner, 4> = load %a_1
+    %71:array<Inner, 4> = load %a_1
+    ret %71
+  }
+}
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %73:mat3x3<f16> = call %32, %start_byte_offset_2
+    %74:Inner = construct %73
     ret %74
   }
 }
-%32 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %76:mat3x3<f16> = call %38, %start_byte_offset_1
-    %77:Inner = construct %76
-    ret %77
-  }
-}
-%38 = func(%start_byte_offset_2:u32):mat3x3<f16> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %79:u32 = div %start_byte_offset_2, 16u
-    %80:ptr<uniform, vec4<u32>, read> = access %a, %79
-    %81:vec4<u32> = load %80
-    %82:vec4<f16> = bitcast %81
-    %83:vec3<f16> = swizzle %82, xyz
-    %84:u32 = add 8u, %start_byte_offset_2
-    %85:u32 = div %84, 16u
-    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
-    %87:vec4<u32> = load %86
-    %88:vec4<f16> = bitcast %87
-    %89:vec3<f16> = swizzle %88, xyz
-    %90:u32 = add 16u, %start_byte_offset_2
-    %91:u32 = div %90, 16u
-    %92:ptr<uniform, vec4<u32>, read> = access %a, %91
-    %93:vec4<u32> = load %92
-    %94:vec4<f16> = bitcast %93
-    %95:vec3<f16> = swizzle %94, xyz
-    %96:mat3x3<f16> = construct %83, %89, %95
-    ret %96
-  }
-}
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%32 = func(%start_byte_offset_3:u32):mat3x3<f16> {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %98:array<Inner, 4> = call %28, %start_byte_offset_3
-    %99:Outer = construct %98
-    ret %99
+    %76:u32 = div %start_byte_offset_3, 16u
+    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
+    %78:vec4<u32> = load %77
+    %79:vec4<f16> = bitcast %78
+    %80:vec3<f16> = swizzle %79, xyz
+    %81:u32 = add 8u, %start_byte_offset_3
+    %82:u32 = div %81, 16u
+    %83:ptr<uniform, vec4<u32>, read> = access %a, %82
+    %84:vec4<u32> = load %83
+    %85:vec4<f16> = bitcast %84
+    %86:vec3<f16> = swizzle %85, xyz
+    %87:u32 = add 16u, %start_byte_offset_3
+    %88:u32 = div %87, 16u
+    %89:ptr<uniform, vec4<u32>, read> = access %a, %88
+    %90:vec4<u32> = load %89
+    %91:vec4<f16> = bitcast %90
+    %92:vec3<f16> = swizzle %91, xyz
+    %93:mat3x3<f16> = construct %80, %86, %92
+    ret %93
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -258,26 +216,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %103:bool = gte %idx_1, 4u
-        if %103 [t: $B16] {  # if_2
+        %97:bool = gte %idx_1, 4u
+        if %97 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %104:u32 = mul %idx_1, 256u
-        %105:u32 = add %start_byte_offset_4, %104
-        %106:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %107:Outer = call %25, %105
-        store %106, %107
+        %98:u32 = mul %idx_1, 256u
+        %99:u32 = add %start_byte_offset_4, %98
+        %100:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %101:Outer = call %21, %99
+        store %100, %101
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %108:u32 = add %idx_1, 1u
-        next_iteration %108  # -> $B14
+        %102:u32 = add %idx_1, 1u
+        next_iteration %102  # -> $B14
       }
     }
-    %109:array<Outer, 4> = load %a_2
-    ret %109
+    %103:array<Outer, 4> = load %a_2
+    ret %103
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 6cf4100..913f639 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -141,63 +141,63 @@
     ret
   }
 }
-%28 = func(%start_byte_offset:u32):Inner {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
-    %60:mat3x3<f16> = call %32, %start_byte_offset
-    %61:Inner = construct %60
-    ret %61
-  }
-}
-%32 = func(%start_byte_offset_1:u32):mat3x3<f16> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %63:u32 = div %start_byte_offset_1, 16u
-    %64:ptr<uniform, vec4<u32>, read> = access %a, %63
-    %65:vec4<u32> = load %64
-    %66:vec4<f16> = bitcast %65
-    %67:vec3<f16> = swizzle %66, xyz
-    %68:u32 = add 8u, %start_byte_offset_1
-    %69:u32 = div %68, 16u
-    %70:ptr<uniform, vec4<u32>, read> = access %a, %69
-    %71:vec4<u32> = load %70
-    %72:vec4<f16> = bitcast %71
-    %73:vec3<f16> = swizzle %72, xyz
-    %74:u32 = add 16u, %start_byte_offset_1
-    %75:u32 = div %74, 16u
-    %76:ptr<uniform, vec4<u32>, read> = access %a, %75
-    %77:vec4<u32> = load %76
-    %78:vec4<f16> = bitcast %77
-    %79:vec3<f16> = swizzle %78, xyz
-    %80:mat3x3<f16> = construct %67, %73, %79
-    ret %80
-  }
-}
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x3<f16>(vec3<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %84:bool = gte %idx, 4u
-        if %84 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %62:bool = gte %idx, 4u
+        if %62 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %85:u32 = mul %idx, 64u
-        %86:u32 = add %start_byte_offset_2, %85
-        %87:ptr<function, Inner, read_write> = access %a_1, %idx
-        %88:Inner = call %28, %86
-        store %87, %88
-        continue  # -> $B9
+        %63:u32 = mul %idx, 64u
+        %64:u32 = add %start_byte_offset, %63
+        %65:ptr<function, Inner, read_write> = access %a_1, %idx
+        %66:Inner = call %28, %64
+        store %65, %66
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %89:u32 = add %idx, 1u
-        next_iteration %89  # -> $B8
+      $B7: {  # continuing
+        %67:u32 = add %idx, 1u
+        next_iteration %67  # -> $B6
       }
     }
-    %90:array<Inner, 4> = load %a_1
+    %68:array<Inner, 4> = load %a_1
+    ret %68
+  }
+}
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %70:mat3x3<f16> = call %32, %start_byte_offset_1
+    %71:Inner = construct %70
+    ret %71
+  }
+}
+%32 = func(%start_byte_offset_2:u32):mat3x3<f16> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %73:u32 = div %start_byte_offset_2, 16u
+    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
+    %75:vec4<u32> = load %74
+    %76:vec4<f16> = bitcast %75
+    %77:vec3<f16> = swizzle %76, xyz
+    %78:u32 = add 8u, %start_byte_offset_2
+    %79:u32 = div %78, 16u
+    %80:ptr<uniform, vec4<u32>, read> = access %a, %79
+    %81:vec4<u32> = load %80
+    %82:vec4<f16> = bitcast %81
+    %83:vec3<f16> = swizzle %82, xyz
+    %84:u32 = add 16u, %start_byte_offset_2
+    %85:u32 = div %84, 16u
+    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
+    %87:vec4<u32> = load %86
+    %88:vec4<f16> = bitcast %87
+    %89:vec3<f16> = swizzle %88, xyz
+    %90:mat3x3<f16> = construct %77, %83, %89
     ret %90
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index fd723e6..c702ece 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -31,7 +31,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -47,7 +47,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -64,15 +64,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 3, 3> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 3, 3> l_a_3_a_2_m = a_load_4(896u);
   uint2 ubo_load_6 = a[56].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const vector<float16_t, 3> l_a_3_a_2_m_1 = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
+  vector<float16_t, 3> l_a_3_a_2_m_1 = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017CF01F4FC0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 11aa54b..d21a030 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -99,5 +99,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002183174DEC0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002C70EA8BDF0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index 2d964f2..41271fd 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -25,14 +25,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 3> t = transpose(u_load(264u));
+  matrix<float16_t, 3, 3> t = transpose(u_load(264u));
   uint2 ubo_load_6 = u[1].xy;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]).zxy);
+  float16_t l = length(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]).zxy);
   uint2 ubo_load_7 = u[1].xy;
   vector<float16_t, 2> ubo_load_7_xz = vector<float16_t, 2>(f16tof32(ubo_load_7 & 0xFFFF));
   float16_t ubo_load_7_y = f16tof32(ubo_load_7[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_7_xz[0], ubo_load_7_y, ubo_load_7_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_7_xz[0], ubo_load_7_y, ubo_load_7_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013CDE9A5500(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 302f2ef..a7b017f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000200DB07E6F0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018045CC6900(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl
index adfaff6..57edc4f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -47,7 +47,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -77,3 +77,6 @@
   e(vector<float16_t, 3>(ubo_load_7_xz[0], ubo_load_7_y, ubo_load_7_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BC5FB3B3A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index f25c078..9a6025f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -85,5 +85,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A4DA862540(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FCF8FEDF50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl
index c561c1d..8333255 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -33,7 +33,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -59,3 +59,6 @@
   p[1].m[0] = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]).zxy;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027F768B12A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index c0874ba..e144b76 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -70,5 +70,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000204A045E2E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ACE2C89830(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl
index f1b5f3b..47256f6 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -54,7 +54,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -80,3 +80,6 @@
   s.Store<vector<float16_t, 3> >(136u, vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]).zxy);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000159D69F4830(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 18f8413..93537f3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -101,5 +101,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019987ED3420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DA0B6B6340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 7559696..ade46a0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -37,7 +49,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol_3;
 }
 
@@ -53,14 +65,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(264u);
@@ -75,3 +80,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D639D5A010(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 202ee38..c9f4612 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -95,5 +95,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AFE40757B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F11E335760(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 2dc91fc..931aeae 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,31 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :40:24 error: binary: %26 is not in scope
-    %25:u32 = add %24, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:60:5 note: %26 declared here
-    %26:u32 = mul %48, 4u
-    ^^^^^^^
-
-:48:24 error: binary: %26 is not in scope
-    %36:u32 = add %35, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:60:5 note: %26 declared here
-    %26:u32 = mul %48, 4u
-    ^^^^^^^
-
-:60:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :55:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -82,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %26:u32 = mul %48, 4u
+    %43:u32 = mul %42, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -127,137 +103,132 @@
     %l_a:array<Outer, 4> = let %17
     %20:Outer = call %21, %10
     %l_a_i:Outer = let %20
-    %23:u32 = add %10, %13
-    %24:u32 = add %23, %16
-    %25:u32 = add %24, %26
-    %27:array<Inner, 4> = call %28, %25
-    %l_a_i_a:array<Inner, 4> = let %27
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:Inner = call %32, %30
-    %l_a_i_a_i:Inner = let %31
+    %31:mat3x3<f32> = call %32, %30
+    %l_a_i_a_i_m:mat3x3<f32> = let %31
     %34:u32 = add %10, %13
     %35:u32 = add %34, %16
-    %36:u32 = add %35, %26
-    %37:mat3x3<f32> = call %38, %36
-    %l_a_i_a_i_m:mat3x3<f32> = let %37
-    %40:u32 = add %10, %13
-    %41:u32 = add %40, %16
-    %42:u32 = div %41, 16u
-    %43:ptr<uniform, vec4<u32>, read> = access %a, %42
-    %44:vec4<u32> = load %43
-    %45:vec3<u32> = swizzle %44, xyz
-    %46:vec3<f32> = bitcast %45
-    %l_a_i_a_i_m_i:vec3<f32> = let %46
-    %48:i32 = call %i
-    %26:u32 = mul %48, 4u
-    %49:u32 = add %10, %13
-    %50:u32 = add %49, %16
-    %51:u32 = add %50, %26
-    %52:u32 = div %51, 16u
-    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
-    %54:u32 = mod %51, 16u
-    %55:u32 = div %54, 4u
-    %56:u32 = load_vector_element %53, %55
-    %57:f32 = bitcast %56
-    %l_a_i_a_i_m_i_i:f32 = let %57
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec3<u32> = swizzle %38, xyz
+    %40:vec3<f32> = bitcast %39
+    %l_a_i_a_i_m_i:vec3<f32> = let %40
+    %42:i32 = call %i
+    %43:u32 = mul %42, 4u
+    %44:u32 = add %10, %13
+    %45:u32 = add %44, %16
+    %46:u32 = add %45, %43
+    %47:u32 = div %46, 16u
+    %48:ptr<uniform, vec4<u32>, read> = access %a, %47
+    %49:u32 = mod %46, 16u
+    %50:u32 = div %49, 4u
+    %51:u32 = load_vector_element %48, %50
+    %52:f32 = bitcast %51
+    %l_a_i_a_i_m_i_i:f32 = let %52
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%32 = func(%start_byte_offset:u32):mat3x3<f32> {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x3<f32>(vec3<f32>(0.0f))))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
+    %55:u32 = div %start_byte_offset, 16u
+    %56:ptr<uniform, vec4<u32>, read> = access %a, %55
+    %57:vec4<u32> = load %56
+    %58:vec3<u32> = swizzle %57, xyz
+    %59:vec3<f32> = bitcast %58
+    %60:u32 = add 16u, %start_byte_offset
+    %61:u32 = div %60, 16u
+    %62:ptr<uniform, vec4<u32>, read> = access %a, %61
+    %63:vec4<u32> = load %62
+    %64:vec3<u32> = swizzle %63, xyz
+    %65:vec3<f32> = bitcast %64
+    %66:u32 = add 32u, %start_byte_offset
+    %67:u32 = div %66, 16u
+    %68:ptr<uniform, vec4<u32>, read> = access %a, %67
+    %69:vec4<u32> = load %68
+    %70:vec3<u32> = swizzle %69, xyz
+    %71:vec3<f32> = bitcast %70
+    %72:mat3x3<f32> = construct %59, %65, %71
+    ret %72
+  }
+}
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %74:mat3x3<f32> = call %32, %start_byte_offset_1
+    %75:Inner = construct %74
+    ret %75
+  }
+}
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B6: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x3<f32>(vec3<f32>(0.0f))))  # %a_1: 'a'
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
       }
-      $B6 (%idx:u32): {  # body
-        %62:bool = gte %idx, 4u
-        if %62 [t: $B8] {  # if_1
-          $B8: {  # true
+      $B8 (%idx:u32): {  # body
+        %79:bool = gte %idx, 4u
+        if %79 [t: $B10] {  # if_1
+          $B10: {  # true
             exit_loop  # loop_1
           }
         }
-        %63:u32 = mul %idx, 256u
-        %64:u32 = add %start_byte_offset, %63
-        %65:ptr<function, Outer, read_write> = access %a_1, %idx
-        %66:Outer = call %21, %64
-        store %65, %66
-        continue  # -> $B7
+        %80:u32 = mul %idx, 64u
+        %81:u32 = add %start_byte_offset_2, %80
+        %82:ptr<function, Inner, read_write> = access %a_1, %idx
+        %83:Inner = call %28, %81
+        store %82, %83
+        continue  # -> $B9
       }
-      $B7: {  # continuing
-        %67:u32 = add %idx, 1u
-        next_iteration %67  # -> $B6
+      $B9: {  # continuing
+        %84:u32 = add %idx, 1u
+        next_iteration %84  # -> $B8
       }
     }
-    %68:array<Outer, 4> = load %a_1
-    ret %68
+    %85:array<Inner, 4> = load %a_1
+    ret %85
   }
 }
-%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %70:array<Inner, 4> = call %28, %start_byte_offset_1
-    %71:Outer = construct %70
-    ret %71
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %87:array<Inner, 4> = call %24, %start_byte_offset_3
+    %88:Outer = construct %87
+    ret %88
   }
 }
-%28 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x3<f32>(vec3<f32>(0.0f))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x3<f32>(vec3<f32>(0.0f))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
       }
-      $B12 (%idx_1:u32): {  # body
-        %75:bool = gte %idx_1, 4u
-        if %75 [t: $B14] {  # if_2
-          $B14: {  # true
+      $B14 (%idx_1:u32): {  # body
+        %92:bool = gte %idx_1, 4u
+        if %92 [t: $B16] {  # if_2
+          $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %76:u32 = mul %idx_1, 64u
-        %77:u32 = add %start_byte_offset_2, %76
-        %78:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %79:Inner = call %32, %77
-        store %78, %79
-        continue  # -> $B13
+        %93:u32 = mul %idx_1, 256u
+        %94:u32 = add %start_byte_offset_4, %93
+        %95:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %96:Outer = call %21, %94
+        store %95, %96
+        continue  # -> $B15
       }
-      $B13: {  # continuing
-        %80:u32 = add %idx_1, 1u
-        next_iteration %80  # -> $B12
+      $B15: {  # continuing
+        %97:u32 = add %idx_1, 1u
+        next_iteration %97  # -> $B14
       }
     }
-    %81:array<Inner, 4> = load %a_2
-    ret %81
-  }
-}
-%32 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %83:mat3x3<f32> = call %38, %start_byte_offset_3
-    %84:Inner = construct %83
-    ret %84
-  }
-}
-%38 = func(%start_byte_offset_4:u32):mat3x3<f32> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %86:u32 = div %start_byte_offset_4, 16u
-    %87:ptr<uniform, vec4<u32>, read> = access %a, %86
-    %88:vec4<u32> = load %87
-    %89:vec3<u32> = swizzle %88, xyz
-    %90:vec3<f32> = bitcast %89
-    %91:u32 = add 16u, %start_byte_offset_4
-    %92:u32 = div %91, 16u
-    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
-    %94:vec4<u32> = load %93
-    %95:vec3<u32> = swizzle %94, xyz
-    %96:vec3<f32> = bitcast %95
-    %97:u32 = add 32u, %start_byte_offset_4
-    %98:u32 = div %97, 16u
-    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
-    %100:vec4<u32> = load %99
-    %101:vec3<u32> = swizzle %100, xyz
-    %102:vec3<f32> = bitcast %101
-    %103:mat3x3<f32> = construct %90, %96, %102
-    ret %103
+    %98:array<Outer, 4> = load %a_2
+    ret %98
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 8e6fa6d..d40d68c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -134,70 +134,70 @@
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
-    %55:array<Inner, 4> = call %24, %start_byte_offset
-    %56:Outer = construct %55
-    ret %56
-  }
-}
-%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x3<f32>(vec3<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %60:bool = gte %idx, 4u
-        if %60 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %57:bool = gte %idx, 4u
+        if %57 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %61:u32 = mul %idx, 64u
-        %62:u32 = add %start_byte_offset_1, %61
-        %63:ptr<function, Inner, read_write> = access %a_1, %idx
-        %64:Inner = call %28, %62
-        store %63, %64
-        continue  # -> $B8
+        %58:u32 = mul %idx, 64u
+        %59:u32 = add %start_byte_offset, %58
+        %60:ptr<function, Inner, read_write> = access %a_1, %idx
+        %61:Inner = call %28, %59
+        store %60, %61
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %65:u32 = add %idx, 1u
-        next_iteration %65  # -> $B7
+      $B7: {  # continuing
+        %62:u32 = add %idx, 1u
+        next_iteration %62  # -> $B6
       }
     }
-    %66:array<Inner, 4> = load %a_1
+    %63:array<Inner, 4> = load %a_1
+    ret %63
+  }
+}
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %65:mat3x3<f32> = call %32, %start_byte_offset_1
+    %66:Inner = construct %65
     ret %66
   }
 }
-%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%32 = func(%start_byte_offset_2:u32):mat3x3<f32> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %68:mat3x3<f32> = call %32, %start_byte_offset_2
-    %69:Inner = construct %68
-    ret %69
+    %68:u32 = div %start_byte_offset_2, 16u
+    %69:ptr<uniform, vec4<u32>, read> = access %a, %68
+    %70:vec4<u32> = load %69
+    %71:vec3<u32> = swizzle %70, xyz
+    %72:vec3<f32> = bitcast %71
+    %73:u32 = add 16u, %start_byte_offset_2
+    %74:u32 = div %73, 16u
+    %75:ptr<uniform, vec4<u32>, read> = access %a, %74
+    %76:vec4<u32> = load %75
+    %77:vec3<u32> = swizzle %76, xyz
+    %78:vec3<f32> = bitcast %77
+    %79:u32 = add 32u, %start_byte_offset_2
+    %80:u32 = div %79, 16u
+    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
+    %82:vec4<u32> = load %81
+    %83:vec3<u32> = swizzle %82, xyz
+    %84:vec3<f32> = bitcast %83
+    %85:mat3x3<f32> = construct %72, %78, %84
+    ret %85
   }
 }
-%32 = func(%start_byte_offset_3:u32):mat3x3<f32> {  # %start_byte_offset_3: 'start_byte_offset'
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %71:u32 = div %start_byte_offset_3, 16u
-    %72:ptr<uniform, vec4<u32>, read> = access %a, %71
-    %73:vec4<u32> = load %72
-    %74:vec3<u32> = swizzle %73, xyz
-    %75:vec3<f32> = bitcast %74
-    %76:u32 = add 16u, %start_byte_offset_3
-    %77:u32 = div %76, 16u
-    %78:ptr<uniform, vec4<u32>, read> = access %a, %77
-    %79:vec4<u32> = load %78
-    %80:vec3<u32> = swizzle %79, xyz
-    %81:vec3<f32> = bitcast %80
-    %82:u32 = add 32u, %start_byte_offset_3
-    %83:u32 = div %82, 16u
-    %84:ptr<uniform, vec4<u32>, read> = access %a, %83
-    %85:vec4<u32> = load %84
-    %86:vec3<u32> = swizzle %85, xyz
-    %87:vec3<f32> = bitcast %86
-    %88:mat3x3<f32> = construct %75, %81, %87
+    %87:array<Inner, 4> = call %24, %start_byte_offset_3
+    %88:Outer = construct %87
     ret %88
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index df19155..6e18e20 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -37,7 +37,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -53,7 +53,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -70,26 +70,29 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 3, 4> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 3, 4> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_3 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (8u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint4 ubo_load_7 = a[scalar_offset_3 / 4];
   uint2 ubo_load_6 = ((scalar_offset_3 & 2) ? ubo_load_7.zw : ubo_load_7.xy);
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   vector<float16_t, 2> ubo_load_6_yw = vector<float16_t, 2>(f16tof32(ubo_load_6 >> 16));
-  const vector<float16_t, 4> l_a_i_a_i_m_i = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 4> l_a_i_a_i_m_i = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (8u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000295B06CEEA0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index faa23e5..f436072 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,31 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:60:5 note: %23 declared here
-    %23:u32 = mul %48, 2u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:60:5 note: %23 declared here
-    %23:u32 = mul %48, 2u
-    ^^^^^^^
-
-:60:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :54:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -84,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %48, 2u
+    %42:u32 = mul %41, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -127,111 +103,105 @@
     %16:u32 = mul 8u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:Inner = call %35, %33
-    %l_a_i_a_i:Inner = let %34
-    %37:u32 = add %10, %13
-    %38:mat3x4<f16> = call %39, %37
-    %l_a_i_a_i_m:mat3x4<f16> = let %38
-    %41:u32 = add %10, %13
-    %42:u32 = add %41, %16
-    %43:u32 = div %42, 16u
-    %44:ptr<uniform, vec4<u32>, read> = access %a, %43
-    %45:vec4<u32> = load %44
-    %46:vec4<f16> = bitcast %45
-    %l_a_i_a_i_m_i:vec4<f16> = let %46
-    %48:i32 = call %i
-    %23:u32 = mul %48, 2u
-    %49:u32 = add %10, %13
-    %50:u32 = add %49, %16
-    %51:u32 = add %50, %23
-    %52:u32 = div %51, 16u
-    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
-    %54:u32 = mod %51, 16u
-    %55:u32 = div %54, 4u
-    %56:u32 = load_vector_element %53, %55
-    %57:u32 = mod %51, 4u
-    %58:bool = eq %57, 0u
-    %59:u32 = hlsl.ternary 16u, 0u, %58
-    %60:u32 = shr %56, %59
-    %61:f32 = hlsl.f16tof32 %60
-    %62:f16 = convert %61
-    %l_a_i_a_i_m_i_i:f16 = let %62
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat3x4<f16> = call %32, %30
+    %l_a_i_a_i_m:mat3x4<f16> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f16> = bitcast %38
+    %l_a_i_a_i_m_i:vec4<f16> = let %39
+    %41:i32 = call %i
+    %42:u32 = mul %41, 2u
+    %43:u32 = add %10, %13
+    %44:u32 = add %43, %16
+    %45:u32 = add %44, %42
+    %46:u32 = div %45, 16u
+    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
+    %48:u32 = mod %45, 16u
+    %49:u32 = div %48, 4u
+    %50:u32 = load_vector_element %47, %49
+    %51:u32 = mod %45, 4u
+    %52:bool = eq %51, 0u
+    %53:u32 = hlsl.ternary 16u, 0u, %52
+    %54:u32 = shr %50, %53
+    %55:f32 = hlsl.f16tof32 %54
+    %56:f16 = convert %55
+    %l_a_i_a_i_m_i_i:f16 = let %56
     ret
   }
 }
-%35 = func(%start_byte_offset:u32):Inner {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
-    %65:mat3x4<f16> = call %39, %start_byte_offset
-    %66:Inner = construct %65
-    ret %66
-  }
-}
-%39 = func(%start_byte_offset_1:u32):mat3x4<f16> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %68:u32 = div %start_byte_offset_1, 16u
-    %69:ptr<uniform, vec4<u32>, read> = access %a, %68
-    %70:vec4<u32> = load %69
-    %71:vec4<f16> = bitcast %70
-    %72:u32 = add 8u, %start_byte_offset_1
-    %73:u32 = div %72, 16u
-    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
-    %75:vec4<u32> = load %74
-    %76:vec4<f16> = bitcast %75
-    %77:u32 = add 16u, %start_byte_offset_1
-    %78:u32 = div %77, 16u
-    %79:ptr<uniform, vec4<u32>, read> = access %a, %78
-    %80:vec4<u32> = load %79
-    %81:vec4<f16> = bitcast %80
-    %82:mat3x4<f16> = construct %71, %76, %81
-    ret %82
-  }
-}
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x4<f16>(vec4<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %86:bool = gte %idx, 4u
-        if %86 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %61:bool = gte %idx, 4u
+        if %61 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %87:u32 = mul %idx, 64u
-        %88:u32 = add %start_byte_offset_2, %87
-        %89:ptr<function, Inner, read_write> = access %a_1, %idx
-        %90:Inner = call %35, %88
-        store %89, %90
-        continue  # -> $B9
+        %62:u32 = mul %idx, 64u
+        %63:u32 = add %start_byte_offset, %62
+        %64:ptr<function, Inner, read_write> = access %a_1, %idx
+        %65:Inner = call %28, %63
+        store %64, %65
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %91:u32 = add %idx, 1u
-        next_iteration %91  # -> $B8
+      $B7: {  # continuing
+        %66:u32 = add %idx, 1u
+        next_iteration %66  # -> $B6
       }
     }
-    %92:array<Inner, 4> = load %a_1
-    ret %92
+    %67:array<Inner, 4> = load %a_1
+    ret %67
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %69:mat3x4<f16> = call %32, %start_byte_offset_1
+    %70:Inner = construct %69
+    ret %70
+  }
+}
+%32 = func(%start_byte_offset_2:u32):mat3x4<f16> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %72:u32 = div %start_byte_offset_2, 16u
+    %73:ptr<uniform, vec4<u32>, read> = access %a, %72
+    %74:vec4<u32> = load %73
+    %75:vec4<f16> = bitcast %74
+    %76:u32 = add 8u, %start_byte_offset_2
+    %77:u32 = div %76, 16u
+    %78:ptr<uniform, vec4<u32>, read> = access %a, %77
+    %79:vec4<u32> = load %78
+    %80:vec4<f16> = bitcast %79
+    %81:u32 = add 16u, %start_byte_offset_2
+    %82:u32 = div %81, 16u
+    %83:ptr<uniform, vec4<u32>, read> = access %a, %82
+    %84:vec4<u32> = load %83
+    %85:vec4<f16> = bitcast %84
+    %86:mat3x4<f16> = construct %75, %80, %85
+    ret %86
+  }
+}
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %94:array<Inner, 4> = call %31, %start_byte_offset_3
-    %95:Outer = construct %94
-    ret %95
+    %88:array<Inner, 4> = call %24, %start_byte_offset_3
+    %89:Outer = construct %88
+    ret %89
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -242,26 +212,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %99:bool = gte %idx_1, 4u
-        if %99 [t: $B16] {  # if_2
+        %93:bool = gte %idx_1, 4u
+        if %93 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %100:u32 = mul %idx_1, 256u
-        %101:u32 = add %start_byte_offset_4, %100
-        %102:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %103:Outer = call %25, %101
-        store %102, %103
+        %94:u32 = mul %idx_1, 256u
+        %95:u32 = add %start_byte_offset_4, %94
+        %96:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %97:Outer = call %21, %95
+        store %96, %97
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %104:u32 = add %idx_1, 1u
-        next_iteration %104  # -> $B14
+        %98:u32 = add %idx_1, 1u
+        next_iteration %98  # -> $B14
       }
     }
-    %105:array<Outer, 4> = load %a_2
-    ret %105
+    %99:array<Outer, 4> = load %a_2
+    ret %99
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index d8bfe56..e8cfa75 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -140,97 +140,97 @@
     ret
   }
 }
-%28 = func(%start_byte_offset:u32):Inner {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %59:mat3x4<f16> = call %32, %start_byte_offset
-    %60:Inner = construct %59
-    ret %60
-  }
-}
-%32 = func(%start_byte_offset_1:u32):mat3x4<f16> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %62:u32 = div %start_byte_offset_1, 16u
-    %63:ptr<uniform, vec4<u32>, read> = access %a, %62
-    %64:vec4<u32> = load %63
-    %65:vec4<f16> = bitcast %64
-    %66:u32 = add 8u, %start_byte_offset_1
-    %67:u32 = div %66, 16u
-    %68:ptr<uniform, vec4<u32>, read> = access %a, %67
-    %69:vec4<u32> = load %68
-    %70:vec4<f16> = bitcast %69
-    %71:u32 = add 16u, %start_byte_offset_1
-    %72:u32 = div %71, 16u
-    %73:ptr<uniform, vec4<u32>, read> = access %a, %72
-    %74:vec4<u32> = load %73
-    %75:vec4<f16> = bitcast %74
-    %76:mat3x4<f16> = construct %65, %70, %75
-    ret %76
-  }
-}
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x4<f16>(vec4<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x4<f16>(vec4<f16>(0.0h))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %80:bool = gte %idx, 4u
-        if %80 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %61:bool = gte %idx, 4u
+        if %61 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %81:u32 = mul %idx, 64u
-        %82:u32 = add %start_byte_offset_2, %81
-        %83:ptr<function, Inner, read_write> = access %a_1, %idx
-        %84:Inner = call %28, %82
-        store %83, %84
-        continue  # -> $B9
+        %62:u32 = mul %idx, 256u
+        %63:u32 = add %start_byte_offset, %62
+        %64:ptr<function, Outer, read_write> = access %a_1, %idx
+        %65:Outer = call %21, %63
+        store %64, %65
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %85:u32 = add %idx, 1u
-        next_iteration %85  # -> $B8
+      $B7: {  # continuing
+        %66:u32 = add %idx, 1u
+        next_iteration %66  # -> $B6
       }
     }
-    %86:array<Inner, 4> = load %a_1
-    ret %86
+    %67:array<Outer, 4> = load %a_1
+    ret %67
   }
 }
-%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %88:array<Inner, 4> = call %24, %start_byte_offset_3
-    %89:Outer = construct %88
-    ret %89
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %69:array<Inner, 4> = call %24, %start_byte_offset_1
+    %70:Outer = construct %69
+    ret %70
   }
 }
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x4<f16>(vec4<f16>(0.0h))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x4<f16>(vec4<f16>(0.0h))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %93:bool = gte %idx_1, 4u
-        if %93 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %74:bool = gte %idx_1, 4u
+        if %74 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %94:u32 = mul %idx_1, 256u
-        %95:u32 = add %start_byte_offset_4, %94
-        %96:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %97:Outer = call %21, %95
-        store %96, %97
-        continue  # -> $B15
+        %75:u32 = mul %idx_1, 64u
+        %76:u32 = add %start_byte_offset_2, %75
+        %77:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %78:Inner = call %28, %76
+        store %77, %78
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %98:u32 = add %idx_1, 1u
-        next_iteration %98  # -> $B14
+      $B13: {  # continuing
+        %79:u32 = add %idx_1, 1u
+        next_iteration %79  # -> $B12
       }
     }
-    %99:array<Outer, 4> = load %a_2
+    %80:array<Inner, 4> = load %a_2
+    ret %80
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %82:mat3x4<f16> = call %32, %start_byte_offset_3
+    %83:Inner = construct %82
+    ret %83
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat3x4<f16> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %85:u32 = div %start_byte_offset_4, 16u
+    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
+    %87:vec4<u32> = load %86
+    %88:vec4<f16> = bitcast %87
+    %89:u32 = add 8u, %start_byte_offset_4
+    %90:u32 = div %89, 16u
+    %91:ptr<uniform, vec4<u32>, read> = access %a, %90
+    %92:vec4<u32> = load %91
+    %93:vec4<f16> = bitcast %92
+    %94:u32 = add 16u, %start_byte_offset_4
+    %95:u32 = div %94, 16u
+    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
+    %97:vec4<u32> = load %96
+    %98:vec4<f16> = bitcast %97
+    %99:mat3x4<f16> = construct %88, %93, %98
     ret %99
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index eb5b518..d7665a3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -31,7 +31,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -47,7 +47,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -64,15 +64,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 3, 4> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 3, 4> l_a_3_a_2_m = a_load_4(896u);
   uint2 ubo_load_6 = a[56].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   vector<float16_t, 2> ubo_load_6_yw = vector<float16_t, 2>(f16tof32(ubo_load_6 >> 16));
-  const vector<float16_t, 4> l_a_3_a_2_m_1 = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
+  vector<float16_t, 4> l_a_3_a_2_m_1 = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020190E682C0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 2d343ecd..0c954cc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -99,5 +99,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EBAD5441E0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A41E2091A0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index 64905e4..399d192 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -25,14 +25,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 3> t = transpose(u_load(264u));
+  matrix<float16_t, 4, 3> t = transpose(u_load(264u));
   uint2 ubo_load_6 = u[1].xy;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   vector<float16_t, 2> ubo_load_6_yw = vector<float16_t, 2>(f16tof32(ubo_load_6 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]).ywxz);
+  float16_t l = length(vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]).ywxz);
   uint2 ubo_load_7 = u[1].xy;
   vector<float16_t, 2> ubo_load_7_xz = vector<float16_t, 2>(f16tof32(ubo_load_7 & 0xFFFF));
   vector<float16_t, 2> ubo_load_7_yw = vector<float16_t, 2>(f16tof32(ubo_load_7 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_7_xz[0], ubo_load_7_yw[0], ubo_load_7_xz[1], ubo_load_7_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_7_xz[0], ubo_load_7_yw[0], ubo_load_7_xz[1], ubo_load_7_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022E6406B9C0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 2a7aac8..9abad088 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000215F9583E00(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C4E55DCCB0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl
index dfefe84..949d908 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -47,7 +47,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -77,3 +77,6 @@
   e(vector<float16_t, 4>(ubo_load_7_xz[0], ubo_load_7_yw[0], ubo_load_7_xz[1], ubo_load_7_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CCC7BB34B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index ae2a332..8d6471d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -85,5 +85,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DBA1852540(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D271DD4CE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl
index 83305a2..7923a21 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -33,7 +33,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -59,3 +59,6 @@
   p[1].m[0] = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]).ywxz;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000270E0B31310(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 1d77fd7..018c04a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -70,5 +70,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016CFB18E2E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015B76BFB6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl
index 8b1f179..a448d94 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -54,7 +54,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol;
 }
 
@@ -80,3 +80,6 @@
   s.Store<vector<float16_t, 4> >(136u, vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]).ywxz);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E0C9BB4D00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 4d9d739..7c8519d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -101,5 +101,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018460E73DC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021976867420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index a19fef2..ea986d4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -37,7 +49,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_3 = ((offset + 0u)) / 4;
   const uint scalar_offset_4 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_3 / 4][scalar_offset_3 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4])};
   return tint_symbol_3;
 }
 
@@ -53,14 +65,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(264u);
@@ -75,3 +80,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016A16DA6580(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index dd977e9..605eda2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -95,5 +95,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000180F72F2420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CF9DE8A2C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 631a20b..1ecaaf4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -133,97 +133,97 @@
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %54:array<Inner, 4> = call %24, %start_byte_offset
-    %55:Outer = construct %54
-    ret %55
-  }
-}
-%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x4<f32>(vec4<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x4<f32>(vec4<f32>(0.0f))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %59:bool = gte %idx, 4u
-        if %59 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %56:bool = gte %idx, 4u
+        if %56 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %60:u32 = mul %idx, 64u
-        %61:u32 = add %start_byte_offset_1, %60
-        %62:ptr<function, Inner, read_write> = access %a_1, %idx
-        %63:Inner = call %28, %61
-        store %62, %63
-        continue  # -> $B8
+        %57:u32 = mul %idx, 256u
+        %58:u32 = add %start_byte_offset, %57
+        %59:ptr<function, Outer, read_write> = access %a_1, %idx
+        %60:Outer = call %21, %58
+        store %59, %60
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %64:u32 = add %idx, 1u
-        next_iteration %64  # -> $B7
+      $B7: {  # continuing
+        %61:u32 = add %idx, 1u
+        next_iteration %61  # -> $B6
       }
     }
-    %65:array<Inner, 4> = load %a_1
+    %62:array<Outer, 4> = load %a_1
+    ret %62
+  }
+}
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %64:array<Inner, 4> = call %24, %start_byte_offset_1
+    %65:Outer = construct %64
     ret %65
   }
 }
-%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %67:mat3x4<f32> = call %32, %start_byte_offset_2
-    %68:Inner = construct %67
-    ret %68
-  }
-}
-%32 = func(%start_byte_offset_3:u32):mat3x4<f32> {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %70:u32 = div %start_byte_offset_3, 16u
-    %71:ptr<uniform, vec4<u32>, read> = access %a, %70
-    %72:vec4<u32> = load %71
-    %73:vec4<f32> = bitcast %72
-    %74:u32 = add 16u, %start_byte_offset_3
-    %75:u32 = div %74, 16u
-    %76:ptr<uniform, vec4<u32>, read> = access %a, %75
-    %77:vec4<u32> = load %76
-    %78:vec4<f32> = bitcast %77
-    %79:u32 = add 32u, %start_byte_offset_3
-    %80:u32 = div %79, 16u
-    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
-    %82:vec4<u32> = load %81
-    %83:vec4<f32> = bitcast %82
-    %84:mat3x4<f32> = construct %73, %78, %83
-    ret %84
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat3x4<f32>(vec4<f32>(0.0f))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x4<f32>(vec4<f32>(0.0f))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %88:bool = gte %idx_1, 4u
-        if %88 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %69:bool = gte %idx_1, 4u
+        if %69 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %89:u32 = mul %idx_1, 256u
-        %90:u32 = add %start_byte_offset_4, %89
-        %91:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %92:Outer = call %21, %90
-        store %91, %92
-        continue  # -> $B15
+        %70:u32 = mul %idx_1, 64u
+        %71:u32 = add %start_byte_offset_2, %70
+        %72:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %73:Inner = call %28, %71
+        store %72, %73
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %93:u32 = add %idx_1, 1u
-        next_iteration %93  # -> $B14
+      $B13: {  # continuing
+        %74:u32 = add %idx_1, 1u
+        next_iteration %74  # -> $B12
       }
     }
-    %94:array<Outer, 4> = load %a_2
+    %75:array<Inner, 4> = load %a_2
+    ret %75
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %77:mat3x4<f32> = call %32, %start_byte_offset_3
+    %78:Inner = construct %77
+    ret %78
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat3x4<f32> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %80:u32 = div %start_byte_offset_4, 16u
+    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
+    %82:vec4<u32> = load %81
+    %83:vec4<f32> = bitcast %82
+    %84:u32 = add 16u, %start_byte_offset_4
+    %85:u32 = div %84, 16u
+    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
+    %87:vec4<u32> = load %86
+    %88:vec4<f32> = bitcast %87
+    %89:u32 = add 32u, %start_byte_offset_4
+    %90:u32 = div %89, 16u
+    %91:ptr<uniform, vec4<u32>, read> = access %a, %90
+    %92:vec4<u32> = load %91
+    %93:vec4<f32> = bitcast %92
+    %94:mat3x4<f32> = construct %83, %88, %93
     ret %94
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 82fa24c..4d658e7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -133,60 +133,60 @@
     ret
   }
 }
-%32 = func(%start_byte_offset:u32):mat3x4<f32> {
+%24 = func(%start_byte_offset:u32):array<Inner, 4> {
   $B4: {
-    %54:u32 = div %start_byte_offset, 16u
-    %55:ptr<uniform, vec4<u32>, read> = access %a, %54
-    %56:vec4<u32> = load %55
-    %57:vec4<f32> = bitcast %56
-    %58:u32 = add 16u, %start_byte_offset
-    %59:u32 = div %58, 16u
-    %60:ptr<uniform, vec4<u32>, read> = access %a, %59
-    %61:vec4<u32> = load %60
-    %62:vec4<f32> = bitcast %61
-    %63:u32 = add 32u, %start_byte_offset
-    %64:u32 = div %63, 16u
-    %65:ptr<uniform, vec4<u32>, read> = access %a, %64
-    %66:vec4<u32> = load %65
-    %67:vec4<f32> = bitcast %66
-    %68:mat3x4<f32> = construct %57, %62, %67
-    ret %68
-  }
-}
-%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %70:mat3x4<f32> = call %32, %start_byte_offset_1
-    %71:Inner = construct %70
-    ret %71
-  }
-}
-%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat3x4<f32>(vec4<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B8 (%idx:u32): {  # body
-        %75:bool = gte %idx, 4u
-        if %75 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B6 (%idx:u32): {  # body
+        %56:bool = gte %idx, 4u
+        if %56 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %76:u32 = mul %idx, 64u
-        %77:u32 = add %start_byte_offset_2, %76
-        %78:ptr<function, Inner, read_write> = access %a_1, %idx
-        %79:Inner = call %28, %77
-        store %78, %79
-        continue  # -> $B9
+        %57:u32 = mul %idx, 64u
+        %58:u32 = add %start_byte_offset, %57
+        %59:ptr<function, Inner, read_write> = access %a_1, %idx
+        %60:Inner = call %28, %58
+        store %59, %60
+        continue  # -> $B7
       }
-      $B9: {  # continuing
-        %80:u32 = add %idx, 1u
-        next_iteration %80  # -> $B8
+      $B7: {  # continuing
+        %61:u32 = add %idx, 1u
+        next_iteration %61  # -> $B6
       }
     }
-    %81:array<Inner, 4> = load %a_1
+    %62:array<Inner, 4> = load %a_1
+    ret %62
+  }
+}
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %64:mat3x4<f32> = call %32, %start_byte_offset_1
+    %65:Inner = construct %64
+    ret %65
+  }
+}
+%32 = func(%start_byte_offset_2:u32):mat3x4<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %67:u32 = div %start_byte_offset_2, 16u
+    %68:ptr<uniform, vec4<u32>, read> = access %a, %67
+    %69:vec4<u32> = load %68
+    %70:vec4<f32> = bitcast %69
+    %71:u32 = add 16u, %start_byte_offset_2
+    %72:u32 = div %71, 16u
+    %73:ptr<uniform, vec4<u32>, read> = access %a, %72
+    %74:vec4<u32> = load %73
+    %75:vec4<f32> = bitcast %74
+    %76:u32 = add 32u, %start_byte_offset_2
+    %77:u32 = div %76, 16u
+    %78:ptr<uniform, vec4<u32>, read> = access %a, %77
+    %79:vec4<u32> = load %78
+    %80:vec4<f32> = bitcast %79
+    %81:mat3x4<f32> = construct %70, %75, %80
     ret %81
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index bb08cf6..7e5e183 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -30,7 +30,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -46,7 +46,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -63,23 +63,26 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 4, 2> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 4, 2> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_4 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (4u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint ubo_load_4 = a[scalar_offset_4 / 4][scalar_offset_4 % 4];
-  const vector<float16_t, 2> l_a_i_a_i_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 2> l_a_i_a_i_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (4u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D1B2EB9790(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 09d90c1..0e5afa8 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,43 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 2u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 2u
-    ^^^^^^^
-
-:48:24 error: binary: %23 is not in scope
-    %35:u32 = add %34, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:68:5 note: %23 declared here
-    %23:u32 = mul %56, 2u
-    ^^^^^^^
-
-:68:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :60:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -96,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %56, 2u
+    %48:u32 = mul %47, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -139,148 +103,140 @@
     %16:u32 = mul 4u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:u32 = add %33, %16
-    %35:u32 = add %34, %23
-    %36:Inner = call %37, %35
-    %l_a_i_a_i:Inner = let %36
-    %39:u32 = add %10, %13
-    %40:mat4x2<f16> = call %41, %39
-    %l_a_i_a_i_m:mat4x2<f16> = let %40
-    %43:u32 = add %10, %13
-    %44:u32 = add %43, %16
-    %45:u32 = div %44, 16u
-    %46:ptr<uniform, vec4<u32>, read> = access %a, %45
-    %47:u32 = mod %44, 16u
-    %48:u32 = div %47, 4u
-    %49:vec4<u32> = load %46
-    %50:u32 = swizzle %49, z
-    %51:u32 = swizzle %49, x
-    %52:bool = eq %48, 2u
-    %53:u32 = hlsl.ternary %51, %50, %52
-    %54:vec2<f16> = bitcast %53
-    %l_a_i_a_i_m_i:vec2<f16> = let %54
-    %56:i32 = call %i
-    %23:u32 = mul %56, 2u
-    %57:u32 = add %10, %13
-    %58:u32 = add %57, %16
-    %59:u32 = add %58, %23
-    %60:u32 = div %59, 16u
-    %61:ptr<uniform, vec4<u32>, read> = access %a, %60
-    %62:u32 = mod %59, 16u
-    %63:u32 = div %62, 4u
-    %64:u32 = load_vector_element %61, %63
-    %65:u32 = mod %59, 4u
-    %66:bool = eq %65, 0u
-    %67:u32 = hlsl.ternary 16u, 0u, %66
-    %68:u32 = shr %64, %67
-    %69:f32 = hlsl.f16tof32 %68
-    %70:f16 = convert %69
-    %l_a_i_a_i_m_i_i:f16 = let %70
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat4x2<f16> = call %32, %30
+    %l_a_i_a_i_m:mat4x2<f16> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:u32 = mod %35, 16u
+    %39:u32 = div %38, 4u
+    %40:vec4<u32> = load %37
+    %41:u32 = swizzle %40, z
+    %42:u32 = swizzle %40, x
+    %43:bool = eq %39, 2u
+    %44:u32 = hlsl.ternary %42, %41, %43
+    %45:vec2<f16> = bitcast %44
+    %l_a_i_a_i_m_i:vec2<f16> = let %45
+    %47:i32 = call %i
+    %48:u32 = mul %47, 2u
+    %49:u32 = add %10, %13
+    %50:u32 = add %49, %16
+    %51:u32 = add %50, %48
+    %52:u32 = div %51, 16u
+    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
+    %54:u32 = mod %51, 16u
+    %55:u32 = div %54, 4u
+    %56:u32 = load_vector_element %53, %55
+    %57:u32 = mod %51, 4u
+    %58:bool = eq %57, 0u
+    %59:u32 = hlsl.ternary 16u, 0u, %58
+    %60:u32 = shr %56, %59
+    %61:f32 = hlsl.f16tof32 %60
+    %62:f16 = convert %61
+    %l_a_i_a_i_m_i_i:f16 = let %62
     ret
   }
 }
-%41 = func(%start_byte_offset:u32):mat4x2<f16> {
+%21 = func(%start_byte_offset:u32):Outer {
   $B4: {
-    %73:u32 = div %start_byte_offset, 16u
-    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
-    %75:u32 = mod %start_byte_offset, 16u
-    %76:u32 = div %75, 4u
-    %77:vec4<u32> = load %74
-    %78:u32 = swizzle %77, z
-    %79:u32 = swizzle %77, x
-    %80:bool = eq %76, 2u
-    %81:u32 = hlsl.ternary %79, %78, %80
-    %82:vec2<f16> = bitcast %81
-    %83:u32 = add 4u, %start_byte_offset
-    %84:u32 = div %83, 16u
-    %85:ptr<uniform, vec4<u32>, read> = access %a, %84
-    %86:u32 = mod %83, 16u
-    %87:u32 = div %86, 4u
-    %88:vec4<u32> = load %85
-    %89:u32 = swizzle %88, z
-    %90:u32 = swizzle %88, x
-    %91:bool = eq %87, 2u
-    %92:u32 = hlsl.ternary %90, %89, %91
-    %93:vec2<f16> = bitcast %92
-    %94:u32 = add 8u, %start_byte_offset
-    %95:u32 = div %94, 16u
-    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
-    %97:u32 = mod %94, 16u
-    %98:u32 = div %97, 4u
-    %99:vec4<u32> = load %96
-    %100:u32 = swizzle %99, z
-    %101:u32 = swizzle %99, x
-    %102:bool = eq %98, 2u
-    %103:u32 = hlsl.ternary %101, %100, %102
-    %104:vec2<f16> = bitcast %103
-    %105:u32 = add 12u, %start_byte_offset
-    %106:u32 = div %105, 16u
-    %107:ptr<uniform, vec4<u32>, read> = access %a, %106
-    %108:u32 = mod %105, 16u
-    %109:u32 = div %108, 4u
-    %110:vec4<u32> = load %107
-    %111:u32 = swizzle %110, z
-    %112:u32 = swizzle %110, x
-    %113:bool = eq %109, 2u
-    %114:u32 = hlsl.ternary %112, %111, %113
-    %115:vec2<f16> = bitcast %114
-    %116:mat4x2<f16> = construct %82, %93, %104, %115
-    ret %116
+    %65:array<Inner, 4> = call %24, %start_byte_offset
+    %66:Outer = construct %65
+    ret %66
   }
 }
-%37 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
   $B5: {
-    %118:mat4x2<f16> = call %41, %start_byte_offset_1
-    %119:Inner = construct %118
-    ret %119
-  }
-}
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
-      $B7: {  # initializer
-        next_iteration 0u  # -> $B8
+    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
+      $B6: {  # initializer
+        next_iteration 0u  # -> $B7
       }
-      $B8 (%idx:u32): {  # body
-        %123:bool = gte %idx, 4u
-        if %123 [t: $B10] {  # if_1
-          $B10: {  # true
+      $B7 (%idx:u32): {  # body
+        %70:bool = gte %idx, 4u
+        if %70 [t: $B9] {  # if_1
+          $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %124:u32 = mul %idx, 64u
-        %125:u32 = add %start_byte_offset_2, %124
-        %126:ptr<function, Inner, read_write> = access %a_1, %idx
-        %127:Inner = call %37, %125
-        store %126, %127
-        continue  # -> $B9
+        %71:u32 = mul %idx, 64u
+        %72:u32 = add %start_byte_offset_1, %71
+        %73:ptr<function, Inner, read_write> = access %a_1, %idx
+        %74:Inner = call %28, %72
+        store %73, %74
+        continue  # -> $B8
       }
-      $B9: {  # continuing
-        %128:u32 = add %idx, 1u
-        next_iteration %128  # -> $B8
+      $B8: {  # continuing
+        %75:u32 = add %idx, 1u
+        next_iteration %75  # -> $B7
       }
     }
-    %129:array<Inner, 4> = load %a_1
-    ret %129
+    %76:array<Inner, 4> = load %a_1
+    ret %76
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+  $B10: {
+    %78:mat4x2<f16> = call %32, %start_byte_offset_2
+    %79:Inner = construct %78
+    ret %79
+  }
+}
+%32 = func(%start_byte_offset_3:u32):mat4x2<f16> {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %131:array<Inner, 4> = call %31, %start_byte_offset_3
-    %132:Outer = construct %131
-    ret %132
+    %81:u32 = div %start_byte_offset_3, 16u
+    %82:ptr<uniform, vec4<u32>, read> = access %a, %81
+    %83:u32 = mod %start_byte_offset_3, 16u
+    %84:u32 = div %83, 4u
+    %85:vec4<u32> = load %82
+    %86:u32 = swizzle %85, z
+    %87:u32 = swizzle %85, x
+    %88:bool = eq %84, 2u
+    %89:u32 = hlsl.ternary %87, %86, %88
+    %90:vec2<f16> = bitcast %89
+    %91:u32 = add 4u, %start_byte_offset_3
+    %92:u32 = div %91, 16u
+    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
+    %94:u32 = mod %91, 16u
+    %95:u32 = div %94, 4u
+    %96:vec4<u32> = load %93
+    %97:u32 = swizzle %96, z
+    %98:u32 = swizzle %96, x
+    %99:bool = eq %95, 2u
+    %100:u32 = hlsl.ternary %98, %97, %99
+    %101:vec2<f16> = bitcast %100
+    %102:u32 = add 8u, %start_byte_offset_3
+    %103:u32 = div %102, 16u
+    %104:ptr<uniform, vec4<u32>, read> = access %a, %103
+    %105:u32 = mod %102, 16u
+    %106:u32 = div %105, 4u
+    %107:vec4<u32> = load %104
+    %108:u32 = swizzle %107, z
+    %109:u32 = swizzle %107, x
+    %110:bool = eq %106, 2u
+    %111:u32 = hlsl.ternary %109, %108, %110
+    %112:vec2<f16> = bitcast %111
+    %113:u32 = add 12u, %start_byte_offset_3
+    %114:u32 = div %113, 16u
+    %115:ptr<uniform, vec4<u32>, read> = access %a, %114
+    %116:u32 = mod %113, 16u
+    %117:u32 = div %116, 4u
+    %118:vec4<u32> = load %115
+    %119:u32 = swizzle %118, z
+    %120:u32 = swizzle %118, x
+    %121:bool = eq %117, 2u
+    %122:u32 = hlsl.ternary %120, %119, %121
+    %123:vec2<f16> = bitcast %122
+    %124:mat4x2<f16> = construct %90, %101, %112, %123
+    ret %124
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -291,26 +247,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %136:bool = gte %idx_1, 4u
-        if %136 [t: $B16] {  # if_2
+        %128:bool = gte %idx_1, 4u
+        if %128 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %137:u32 = mul %idx_1, 256u
-        %138:u32 = add %start_byte_offset_4, %137
-        %139:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %140:Outer = call %25, %138
-        store %139, %140
+        %129:u32 = mul %idx_1, 256u
+        %130:u32 = add %start_byte_offset_4, %129
+        %131:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %132:Outer = call %21, %130
+        store %131, %132
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %141:u32 = add %idx_1, 1u
-        next_iteration %141  # -> $B14
+        %133:u32 = add %idx_1, 1u
+        next_iteration %133  # -> $B14
       }
     }
-    %142:array<Outer, 4> = load %a_2
-    ret %142
+    %134:array<Outer, 4> = load %a_2
+    ret %134
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 0e5afa8..0033edf 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -146,96 +146,96 @@
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%32 = func(%start_byte_offset:u32):mat4x2<f16> {
   $B4: {
-    %65:array<Inner, 4> = call %24, %start_byte_offset
-    %66:Outer = construct %65
-    ret %66
+    %65:u32 = div %start_byte_offset, 16u
+    %66:ptr<uniform, vec4<u32>, read> = access %a, %65
+    %67:u32 = mod %start_byte_offset, 16u
+    %68:u32 = div %67, 4u
+    %69:vec4<u32> = load %66
+    %70:u32 = swizzle %69, z
+    %71:u32 = swizzle %69, x
+    %72:bool = eq %68, 2u
+    %73:u32 = hlsl.ternary %71, %70, %72
+    %74:vec2<f16> = bitcast %73
+    %75:u32 = add 4u, %start_byte_offset
+    %76:u32 = div %75, 16u
+    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
+    %78:u32 = mod %75, 16u
+    %79:u32 = div %78, 4u
+    %80:vec4<u32> = load %77
+    %81:u32 = swizzle %80, z
+    %82:u32 = swizzle %80, x
+    %83:bool = eq %79, 2u
+    %84:u32 = hlsl.ternary %82, %81, %83
+    %85:vec2<f16> = bitcast %84
+    %86:u32 = add 8u, %start_byte_offset
+    %87:u32 = div %86, 16u
+    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
+    %89:u32 = mod %86, 16u
+    %90:u32 = div %89, 4u
+    %91:vec4<u32> = load %88
+    %92:u32 = swizzle %91, z
+    %93:u32 = swizzle %91, x
+    %94:bool = eq %90, 2u
+    %95:u32 = hlsl.ternary %93, %92, %94
+    %96:vec2<f16> = bitcast %95
+    %97:u32 = add 12u, %start_byte_offset
+    %98:u32 = div %97, 16u
+    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
+    %100:u32 = mod %97, 16u
+    %101:u32 = div %100, 4u
+    %102:vec4<u32> = load %99
+    %103:u32 = swizzle %102, z
+    %104:u32 = swizzle %102, x
+    %105:bool = eq %101, 2u
+    %106:u32 = hlsl.ternary %104, %103, %105
+    %107:vec2<f16> = bitcast %106
+    %108:mat4x2<f16> = construct %74, %85, %96, %107
+    ret %108
   }
 }
-%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
   $B5: {
+    %110:mat4x2<f16> = call %32, %start_byte_offset_1
+    %111:Inner = construct %110
+    ret %111
+  }
+}
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+  $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x2<f16>(vec2<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
       }
-      $B7 (%idx:u32): {  # body
-        %70:bool = gte %idx, 4u
-        if %70 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B8 (%idx:u32): {  # body
+        %115:bool = gte %idx, 4u
+        if %115 [t: $B10] {  # if_1
+          $B10: {  # true
             exit_loop  # loop_1
           }
         }
-        %71:u32 = mul %idx, 64u
-        %72:u32 = add %start_byte_offset_1, %71
-        %73:ptr<function, Inner, read_write> = access %a_1, %idx
-        %74:Inner = call %28, %72
-        store %73, %74
-        continue  # -> $B8
+        %116:u32 = mul %idx, 64u
+        %117:u32 = add %start_byte_offset_2, %116
+        %118:ptr<function, Inner, read_write> = access %a_1, %idx
+        %119:Inner = call %28, %117
+        store %118, %119
+        continue  # -> $B9
       }
-      $B8: {  # continuing
-        %75:u32 = add %idx, 1u
-        next_iteration %75  # -> $B7
+      $B9: {  # continuing
+        %120:u32 = add %idx, 1u
+        next_iteration %120  # -> $B8
       }
     }
-    %76:array<Inner, 4> = load %a_1
-    ret %76
+    %121:array<Inner, 4> = load %a_1
+    ret %121
   }
 }
-%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %78:mat4x2<f16> = call %32, %start_byte_offset_2
-    %79:Inner = construct %78
-    ret %79
-  }
-}
-%32 = func(%start_byte_offset_3:u32):mat4x2<f16> {  # %start_byte_offset_3: 'start_byte_offset'
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %81:u32 = div %start_byte_offset_3, 16u
-    %82:ptr<uniform, vec4<u32>, read> = access %a, %81
-    %83:u32 = mod %start_byte_offset_3, 16u
-    %84:u32 = div %83, 4u
-    %85:vec4<u32> = load %82
-    %86:u32 = swizzle %85, z
-    %87:u32 = swizzle %85, x
-    %88:bool = eq %84, 2u
-    %89:u32 = hlsl.ternary %87, %86, %88
-    %90:vec2<f16> = bitcast %89
-    %91:u32 = add 4u, %start_byte_offset_3
-    %92:u32 = div %91, 16u
-    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
-    %94:u32 = mod %91, 16u
-    %95:u32 = div %94, 4u
-    %96:vec4<u32> = load %93
-    %97:u32 = swizzle %96, z
-    %98:u32 = swizzle %96, x
-    %99:bool = eq %95, 2u
-    %100:u32 = hlsl.ternary %98, %97, %99
-    %101:vec2<f16> = bitcast %100
-    %102:u32 = add 8u, %start_byte_offset_3
-    %103:u32 = div %102, 16u
-    %104:ptr<uniform, vec4<u32>, read> = access %a, %103
-    %105:u32 = mod %102, 16u
-    %106:u32 = div %105, 4u
-    %107:vec4<u32> = load %104
-    %108:u32 = swizzle %107, z
-    %109:u32 = swizzle %107, x
-    %110:bool = eq %106, 2u
-    %111:u32 = hlsl.ternary %109, %108, %110
-    %112:vec2<f16> = bitcast %111
-    %113:u32 = add 12u, %start_byte_offset_3
-    %114:u32 = div %113, 16u
-    %115:ptr<uniform, vec4<u32>, read> = access %a, %114
-    %116:u32 = mod %113, 16u
-    %117:u32 = div %116, 4u
-    %118:vec4<u32> = load %115
-    %119:u32 = swizzle %118, z
-    %120:u32 = swizzle %118, x
-    %121:bool = eq %117, 2u
-    %122:u32 = hlsl.ternary %120, %119, %121
-    %123:vec2<f16> = bitcast %122
-    %124:mat4x2<f16> = construct %90, %101, %112, %123
+    %123:array<Inner, 4> = call %24, %start_byte_offset_3
+    %124:Outer = construct %123
     ret %124
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index ded93af..289f793 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -24,7 +24,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -40,7 +40,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -57,13 +57,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 4, 2> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 4, 2> l_a_3_a_2_m = a_load_4(896u);
   uint ubo_load_4 = a[56].y;
-  const vector<float16_t, 2> l_a_3_a_2_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].y) & 0xFFFF)));
+  vector<float16_t, 2> l_a_3_a_2_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].y) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AC229E4D00(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 8981e61..04d6d44 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -100,5 +100,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F9499C5CE0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000150FF28C120(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index f88e9c9..29cff16 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -18,10 +18,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 4> t = transpose(u_load(260u));
+  matrix<float16_t, 2, 4> t = transpose(u_load(260u));
   uint ubo_load_4 = u[0].z;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
   uint ubo_load_5 = u[0].z;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F6EDB9CCB0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 74dbe8f..2ef616f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029BDA101CC0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014349375110(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
index 1645795..5daf90e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -40,7 +40,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -66,3 +66,6 @@
   e(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D45DA36330(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 55ca823..65a6bab 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -86,5 +86,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F2FB3E0100(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027AF99AD010(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
index 76d5149..19c0571 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -26,7 +26,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -50,3 +50,6 @@
   p[1].m[0] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A8E2DE12A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 5de802f..7e0b7e4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -71,5 +71,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027ED01DF550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FC2473B150(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
index 7c2a543..e9f9d89 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -48,7 +48,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -72,3 +72,6 @@
   s.Store<vector<float16_t, 2> >(132u, vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CC863A9090(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 5cbdb67..bccb6db 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -103,5 +103,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E5D5EB4A50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014D1CE4C460(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 366b3c6..7dc22ba 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -30,7 +42,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 4u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol_3;
 }
 
@@ -46,14 +58,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(260u);
@@ -66,3 +71,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002435A4B6380(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index ea27176..fde624d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -96,5 +96,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D0CFE5070(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000210A9EE70F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 35a8904..fba081a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,55 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:69:5 note: %23 declared here
-    %23:u32 = mul %57, 4u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:69:5 note: %23 declared here
-    %23:u32 = mul %57, 4u
-    ^^^^^^^
-
-:51:24 error: binary: %23 is not in scope
-    %39:u32 = add %38, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:69:5 note: %23 declared here
-    %23:u32 = mul %57, 4u
-    ^^^^^^^
-
-:56:24 error: binary: %23 is not in scope
-    %45:u32 = add %44, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:69:5 note: %23 declared here
-    %23:u32 = mul %57, 4u
-    ^^^^^^^
-
-:69:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :60:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -106,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %57, 4u
+    %48:u32 = mul %47, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -149,110 +101,101 @@
     %16:u32 = mul 8u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:Inner = call %35, %33
-    %l_a_i_a_i:Inner = let %34
-    %37:u32 = add %10, %13
-    %38:u32 = add %37, %16
-    %39:u32 = add %38, %23
-    %40:mat4x2<f32> = call %41, %39
-    %l_a_i_a_i_m:mat4x2<f32> = let %40
-    %43:u32 = add %10, %13
-    %44:u32 = add %43, %16
-    %45:u32 = add %44, %23
-    %46:u32 = div %45, 16u
-    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
-    %48:u32 = mod %45, 16u
-    %49:u32 = div %48, 4u
-    %50:vec4<u32> = load %47
-    %51:vec2<u32> = swizzle %50, zw
-    %52:vec2<u32> = swizzle %50, xy
-    %53:bool = eq %49, 2u
-    %54:vec2<u32> = hlsl.ternary %52, %51, %53
-    %55:vec2<f32> = bitcast %54
-    %l_a_i_a_i_m_i:vec2<f32> = let %55
-    %57:i32 = call %i
-    %23:u32 = mul %57, 4u
-    %58:u32 = add %10, %13
-    %59:u32 = add %58, %16
-    %60:u32 = add %59, %23
-    %61:u32 = div %60, 16u
-    %62:ptr<uniform, vec4<u32>, read> = access %a, %61
-    %63:u32 = mod %60, 16u
-    %64:u32 = div %63, 4u
-    %65:u32 = load_vector_element %62, %64
-    %66:f32 = bitcast %65
-    %l_a_i_a_i_m_i_i:f32 = let %66
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat4x2<f32> = call %32, %30
+    %l_a_i_a_i_m:mat4x2<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:u32 = mod %35, 16u
+    %39:u32 = div %38, 4u
+    %40:vec4<u32> = load %37
+    %41:vec2<u32> = swizzle %40, zw
+    %42:vec2<u32> = swizzle %40, xy
+    %43:bool = eq %39, 2u
+    %44:vec2<u32> = hlsl.ternary %42, %41, %43
+    %45:vec2<f32> = bitcast %44
+    %l_a_i_a_i_m_i:vec2<f32> = let %45
+    %47:i32 = call %i
+    %48:u32 = mul %47, 4u
+    %49:u32 = add %10, %13
+    %50:u32 = add %49, %16
+    %51:u32 = add %50, %48
+    %52:u32 = div %51, 16u
+    %53:ptr<uniform, vec4<u32>, read> = access %a, %52
+    %54:u32 = mod %51, 16u
+    %55:u32 = div %54, 4u
+    %56:u32 = load_vector_element %53, %55
+    %57:f32 = bitcast %56
+    %l_a_i_a_i_m_i_i:f32 = let %57
     ret
   }
 }
-%35 = func(%start_byte_offset:u32):Inner {
+%28 = func(%start_byte_offset:u32):Inner {
   $B4: {
-    %69:mat4x2<f32> = call %41, %start_byte_offset
-    %70:Inner = construct %69
-    ret %70
+    %60:mat4x2<f32> = call %32, %start_byte_offset
+    %61:Inner = construct %60
+    ret %61
   }
 }
-%41 = func(%start_byte_offset_1:u32):mat4x2<f32> {  # %start_byte_offset_1: 'start_byte_offset'
+%32 = func(%start_byte_offset_1:u32):mat4x2<f32> {  # %start_byte_offset_1: 'start_byte_offset'
   $B5: {
-    %72:u32 = div %start_byte_offset_1, 16u
-    %73:ptr<uniform, vec4<u32>, read> = access %a, %72
-    %74:u32 = mod %start_byte_offset_1, 16u
-    %75:u32 = div %74, 4u
-    %76:vec4<u32> = load %73
-    %77:vec2<u32> = swizzle %76, zw
-    %78:vec2<u32> = swizzle %76, xy
-    %79:bool = eq %75, 2u
-    %80:vec2<u32> = hlsl.ternary %78, %77, %79
-    %81:vec2<f32> = bitcast %80
-    %82:u32 = add 8u, %start_byte_offset_1
-    %83:u32 = div %82, 16u
-    %84:ptr<uniform, vec4<u32>, read> = access %a, %83
-    %85:u32 = mod %82, 16u
-    %86:u32 = div %85, 4u
-    %87:vec4<u32> = load %84
-    %88:vec2<u32> = swizzle %87, zw
-    %89:vec2<u32> = swizzle %87, xy
-    %90:bool = eq %86, 2u
-    %91:vec2<u32> = hlsl.ternary %89, %88, %90
-    %92:vec2<f32> = bitcast %91
-    %93:u32 = add 16u, %start_byte_offset_1
-    %94:u32 = div %93, 16u
-    %95:ptr<uniform, vec4<u32>, read> = access %a, %94
-    %96:u32 = mod %93, 16u
-    %97:u32 = div %96, 4u
-    %98:vec4<u32> = load %95
-    %99:vec2<u32> = swizzle %98, zw
-    %100:vec2<u32> = swizzle %98, xy
-    %101:bool = eq %97, 2u
-    %102:vec2<u32> = hlsl.ternary %100, %99, %101
-    %103:vec2<f32> = bitcast %102
-    %104:u32 = add 24u, %start_byte_offset_1
-    %105:u32 = div %104, 16u
-    %106:ptr<uniform, vec4<u32>, read> = access %a, %105
-    %107:u32 = mod %104, 16u
-    %108:u32 = div %107, 4u
-    %109:vec4<u32> = load %106
-    %110:vec2<u32> = swizzle %109, zw
-    %111:vec2<u32> = swizzle %109, xy
-    %112:bool = eq %108, 2u
-    %113:vec2<u32> = hlsl.ternary %111, %110, %112
-    %114:vec2<f32> = bitcast %113
-    %115:mat4x2<f32> = construct %81, %92, %103, %114
-    ret %115
+    %63:u32 = div %start_byte_offset_1, 16u
+    %64:ptr<uniform, vec4<u32>, read> = access %a, %63
+    %65:u32 = mod %start_byte_offset_1, 16u
+    %66:u32 = div %65, 4u
+    %67:vec4<u32> = load %64
+    %68:vec2<u32> = swizzle %67, zw
+    %69:vec2<u32> = swizzle %67, xy
+    %70:bool = eq %66, 2u
+    %71:vec2<u32> = hlsl.ternary %69, %68, %70
+    %72:vec2<f32> = bitcast %71
+    %73:u32 = add 8u, %start_byte_offset_1
+    %74:u32 = div %73, 16u
+    %75:ptr<uniform, vec4<u32>, read> = access %a, %74
+    %76:u32 = mod %73, 16u
+    %77:u32 = div %76, 4u
+    %78:vec4<u32> = load %75
+    %79:vec2<u32> = swizzle %78, zw
+    %80:vec2<u32> = swizzle %78, xy
+    %81:bool = eq %77, 2u
+    %82:vec2<u32> = hlsl.ternary %80, %79, %81
+    %83:vec2<f32> = bitcast %82
+    %84:u32 = add 16u, %start_byte_offset_1
+    %85:u32 = div %84, 16u
+    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
+    %87:u32 = mod %84, 16u
+    %88:u32 = div %87, 4u
+    %89:vec4<u32> = load %86
+    %90:vec2<u32> = swizzle %89, zw
+    %91:vec2<u32> = swizzle %89, xy
+    %92:bool = eq %88, 2u
+    %93:vec2<u32> = hlsl.ternary %91, %90, %92
+    %94:vec2<f32> = bitcast %93
+    %95:u32 = add 24u, %start_byte_offset_1
+    %96:u32 = div %95, 16u
+    %97:ptr<uniform, vec4<u32>, read> = access %a, %96
+    %98:u32 = mod %95, 16u
+    %99:u32 = div %98, 4u
+    %100:vec4<u32> = load %97
+    %101:vec2<u32> = swizzle %100, zw
+    %102:vec2<u32> = swizzle %100, xy
+    %103:bool = eq %99, 2u
+    %104:vec2<u32> = hlsl.ternary %102, %101, %103
+    %105:vec2<f32> = bitcast %104
+    %106:mat4x2<f32> = construct %72, %83, %94, %105
+    ret %106
   }
 }
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x2<f32>(vec2<f32>(0.0f))))  # %a_1: 'a'
     loop [i: $B7, b: $B8, c: $B9] {  # loop_1
@@ -260,33 +203,33 @@
         next_iteration 0u  # -> $B8
       }
       $B8 (%idx:u32): {  # body
-        %119:bool = gte %idx, 4u
-        if %119 [t: $B10] {  # if_1
+        %110:bool = gte %idx, 4u
+        if %110 [t: $B10] {  # if_1
           $B10: {  # true
             exit_loop  # loop_1
           }
         }
-        %120:u32 = mul %idx, 64u
-        %121:u32 = add %start_byte_offset_2, %120
-        %122:ptr<function, Inner, read_write> = access %a_1, %idx
-        %123:Inner = call %35, %121
-        store %122, %123
+        %111:u32 = mul %idx, 64u
+        %112:u32 = add %start_byte_offset_2, %111
+        %113:ptr<function, Inner, read_write> = access %a_1, %idx
+        %114:Inner = call %28, %112
+        store %113, %114
         continue  # -> $B9
       }
       $B9: {  # continuing
-        %124:u32 = add %idx, 1u
-        next_iteration %124  # -> $B8
+        %115:u32 = add %idx, 1u
+        next_iteration %115  # -> $B8
       }
     }
-    %125:array<Inner, 4> = load %a_1
-    ret %125
+    %116:array<Inner, 4> = load %a_1
+    ret %116
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %127:array<Inner, 4> = call %31, %start_byte_offset_3
-    %128:Outer = construct %127
-    ret %128
+    %118:array<Inner, 4> = call %24, %start_byte_offset_3
+    %119:Outer = construct %118
+    ret %119
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -297,26 +240,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %132:bool = gte %idx_1, 4u
-        if %132 [t: $B16] {  # if_2
+        %123:bool = gte %idx_1, 4u
+        if %123 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %133:u32 = mul %idx_1, 256u
-        %134:u32 = add %start_byte_offset_4, %133
-        %135:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %136:Outer = call %25, %134
-        store %135, %136
+        %124:u32 = mul %idx_1, 256u
+        %125:u32 = add %start_byte_offset_4, %124
+        %126:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %127:Outer = call %21, %125
+        store %126, %127
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %137:u32 = add %idx_1, 1u
-        next_iteration %137  # -> $B14
+        %128:u32 = add %idx_1, 1u
+        next_iteration %128  # -> $B14
       }
     }
-    %138:array<Outer, 4> = load %a_2
-    ret %138
+    %129:array<Outer, 4> = load %a_2
+    ret %129
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 1ecb4d7..c3b99f4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -139,96 +139,96 @@
     ret
   }
 }
-%24 = func(%start_byte_offset:u32):array<Inner, 4> {
+%21 = func(%start_byte_offset:u32):Outer {
   $B4: {
+    %60:array<Inner, 4> = call %24, %start_byte_offset
+    %61:Outer = construct %60
+    ret %61
+  }
+}
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x2<f32>(vec2<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
+    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
+      $B6: {  # initializer
+        next_iteration 0u  # -> $B7
       }
-      $B6 (%idx:u32): {  # body
-        %62:bool = gte %idx, 4u
-        if %62 [t: $B8] {  # if_1
-          $B8: {  # true
+      $B7 (%idx:u32): {  # body
+        %65:bool = gte %idx, 4u
+        if %65 [t: $B9] {  # if_1
+          $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %63:u32 = mul %idx, 64u
-        %64:u32 = add %start_byte_offset, %63
-        %65:ptr<function, Inner, read_write> = access %a_1, %idx
-        %66:Inner = call %28, %64
-        store %65, %66
-        continue  # -> $B7
+        %66:u32 = mul %idx, 64u
+        %67:u32 = add %start_byte_offset_1, %66
+        %68:ptr<function, Inner, read_write> = access %a_1, %idx
+        %69:Inner = call %28, %67
+        store %68, %69
+        continue  # -> $B8
       }
-      $B7: {  # continuing
-        %67:u32 = add %idx, 1u
-        next_iteration %67  # -> $B6
+      $B8: {  # continuing
+        %70:u32 = add %idx, 1u
+        next_iteration %70  # -> $B7
       }
     }
-    %68:array<Inner, 4> = load %a_1
-    ret %68
-  }
-}
-%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %70:mat4x2<f32> = call %32, %start_byte_offset_1
-    %71:Inner = construct %70
+    %71:array<Inner, 4> = load %a_1
     ret %71
   }
 }
-%32 = func(%start_byte_offset_2:u32):mat4x2<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %73:u32 = div %start_byte_offset_2, 16u
-    %74:ptr<uniform, vec4<u32>, read> = access %a, %73
-    %75:u32 = mod %start_byte_offset_2, 16u
-    %76:u32 = div %75, 4u
-    %77:vec4<u32> = load %74
-    %78:vec2<u32> = swizzle %77, zw
-    %79:vec2<u32> = swizzle %77, xy
-    %80:bool = eq %76, 2u
-    %81:vec2<u32> = hlsl.ternary %79, %78, %80
-    %82:vec2<f32> = bitcast %81
-    %83:u32 = add 8u, %start_byte_offset_2
-    %84:u32 = div %83, 16u
-    %85:ptr<uniform, vec4<u32>, read> = access %a, %84
-    %86:u32 = mod %83, 16u
-    %87:u32 = div %86, 4u
-    %88:vec4<u32> = load %85
-    %89:vec2<u32> = swizzle %88, zw
-    %90:vec2<u32> = swizzle %88, xy
-    %91:bool = eq %87, 2u
-    %92:vec2<u32> = hlsl.ternary %90, %89, %91
-    %93:vec2<f32> = bitcast %92
-    %94:u32 = add 16u, %start_byte_offset_2
-    %95:u32 = div %94, 16u
-    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
-    %97:u32 = mod %94, 16u
-    %98:u32 = div %97, 4u
-    %99:vec4<u32> = load %96
-    %100:vec2<u32> = swizzle %99, zw
-    %101:vec2<u32> = swizzle %99, xy
-    %102:bool = eq %98, 2u
-    %103:vec2<u32> = hlsl.ternary %101, %100, %102
-    %104:vec2<f32> = bitcast %103
-    %105:u32 = add 24u, %start_byte_offset_2
-    %106:u32 = div %105, 16u
-    %107:ptr<uniform, vec4<u32>, read> = access %a, %106
-    %108:u32 = mod %105, 16u
-    %109:u32 = div %108, 4u
-    %110:vec4<u32> = load %107
-    %111:vec2<u32> = swizzle %110, zw
-    %112:vec2<u32> = swizzle %110, xy
-    %113:bool = eq %109, 2u
-    %114:vec2<u32> = hlsl.ternary %112, %111, %113
-    %115:vec2<f32> = bitcast %114
-    %116:mat4x2<f32> = construct %82, %93, %104, %115
-    ret %116
+    %73:mat4x2<f32> = call %32, %start_byte_offset_2
+    %74:Inner = construct %73
+    ret %74
   }
 }
-%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%32 = func(%start_byte_offset_3:u32):mat4x2<f32> {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %118:array<Inner, 4> = call %24, %start_byte_offset_3
-    %119:Outer = construct %118
+    %76:u32 = div %start_byte_offset_3, 16u
+    %77:ptr<uniform, vec4<u32>, read> = access %a, %76
+    %78:u32 = mod %start_byte_offset_3, 16u
+    %79:u32 = div %78, 4u
+    %80:vec4<u32> = load %77
+    %81:vec2<u32> = swizzle %80, zw
+    %82:vec2<u32> = swizzle %80, xy
+    %83:bool = eq %79, 2u
+    %84:vec2<u32> = hlsl.ternary %82, %81, %83
+    %85:vec2<f32> = bitcast %84
+    %86:u32 = add 8u, %start_byte_offset_3
+    %87:u32 = div %86, 16u
+    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
+    %89:u32 = mod %86, 16u
+    %90:u32 = div %89, 4u
+    %91:vec4<u32> = load %88
+    %92:vec2<u32> = swizzle %91, zw
+    %93:vec2<u32> = swizzle %91, xy
+    %94:bool = eq %90, 2u
+    %95:vec2<u32> = hlsl.ternary %93, %92, %94
+    %96:vec2<f32> = bitcast %95
+    %97:u32 = add 16u, %start_byte_offset_3
+    %98:u32 = div %97, 16u
+    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
+    %100:u32 = mod %97, 16u
+    %101:u32 = div %100, 4u
+    %102:vec4<u32> = load %99
+    %103:vec2<u32> = swizzle %102, zw
+    %104:vec2<u32> = swizzle %102, xy
+    %105:bool = eq %101, 2u
+    %106:vec2<u32> = hlsl.ternary %104, %103, %105
+    %107:vec2<f32> = bitcast %106
+    %108:u32 = add 24u, %start_byte_offset_3
+    %109:u32 = div %108, 16u
+    %110:ptr<uniform, vec4<u32>, read> = access %a, %109
+    %111:u32 = mod %108, 16u
+    %112:u32 = div %111, 4u
+    %113:vec4<u32> = load %110
+    %114:vec2<u32> = swizzle %113, zw
+    %115:vec2<u32> = swizzle %113, xy
+    %116:bool = eq %112, 2u
+    %117:vec2<u32> = hlsl.ternary %115, %114, %116
+    %118:vec2<f32> = bitcast %117
+    %119:mat4x2<f32> = construct %85, %96, %107, %118
     ret %119
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 2df63f9..2f10832 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -42,7 +42,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -58,7 +58,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -75,26 +75,29 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 4, 3> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 4, 3> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_4 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (8u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint4 ubo_load_9 = a[scalar_offset_4 / 4];
   uint2 ubo_load_8 = ((scalar_offset_4 & 2) ? ubo_load_9.zw : ubo_load_9.xy);
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 3> l_a_i_a_i_m_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 3> l_a_i_a_i_m_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (8u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000280E19A8FE0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 9120550..43b5578 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,43 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :40:24 error: binary: %26 is not in scope
-    %25:u32 = add %24, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %26 declared here
-    %26:u32 = mul %50, 2u
-    ^^^^^^^
-
-:45:24 error: binary: %26 is not in scope
-    %32:u32 = add %31, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %26 declared here
-    %26:u32 = mul %50, 2u
-    ^^^^^^^
-
-:50:24 error: binary: %26 is not in scope
-    %38:u32 = add %37, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %26 declared here
-    %26:u32 = mul %50, 2u
-    ^^^^^^^
-
-:62:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :55:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -96,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %26:u32 = mul %50, 2u
+    %43:u32 = mul %42, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -141,150 +105,143 @@
     %l_a:array<Outer, 4> = let %17
     %20:Outer = call %21, %10
     %l_a_i:Outer = let %20
-    %23:u32 = add %10, %13
-    %24:u32 = add %23, %16
-    %25:u32 = add %24, %26
-    %27:array<Inner, 4> = call %28, %25
-    %l_a_i_a:array<Inner, 4> = let %27
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:u32 = add %30, %16
-    %32:u32 = add %31, %26
-    %33:Inner = call %34, %32
-    %l_a_i_a_i:Inner = let %33
-    %36:u32 = add %10, %13
-    %37:u32 = add %36, %16
-    %38:u32 = add %37, %26
-    %39:mat4x3<f16> = call %40, %38
-    %l_a_i_a_i_m:mat4x3<f16> = let %39
-    %42:u32 = add %10, %13
-    %43:u32 = add %42, %16
-    %44:u32 = div %43, 16u
-    %45:ptr<uniform, vec4<u32>, read> = access %a, %44
-    %46:vec4<u32> = load %45
-    %47:vec4<f16> = bitcast %46
-    %48:vec3<f16> = swizzle %47, xyz
-    %l_a_i_a_i_m_i:vec3<f16> = let %48
-    %50:i32 = call %i
-    %26:u32 = mul %50, 2u
-    %51:u32 = add %10, %13
-    %52:u32 = add %51, %16
-    %53:u32 = add %52, %26
-    %54:u32 = div %53, 16u
-    %55:ptr<uniform, vec4<u32>, read> = access %a, %54
-    %56:u32 = mod %53, 16u
-    %57:u32 = div %56, 4u
-    %58:u32 = load_vector_element %55, %57
-    %59:u32 = mod %53, 4u
-    %60:bool = eq %59, 0u
-    %61:u32 = hlsl.ternary 16u, 0u, %60
-    %62:u32 = shr %58, %61
-    %63:f32 = hlsl.f16tof32 %62
-    %64:f16 = convert %63
-    %l_a_i_a_i_m_i_i:f16 = let %64
+    %31:mat4x3<f16> = call %32, %30
+    %l_a_i_a_i_m:mat4x3<f16> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f16> = bitcast %38
+    %40:vec3<f16> = swizzle %39, xyz
+    %l_a_i_a_i_m_i:vec3<f16> = let %40
+    %42:i32 = call %i
+    %43:u32 = mul %42, 2u
+    %44:u32 = add %10, %13
+    %45:u32 = add %44, %16
+    %46:u32 = add %45, %43
+    %47:u32 = div %46, 16u
+    %48:ptr<uniform, vec4<u32>, read> = access %a, %47
+    %49:u32 = mod %46, 16u
+    %50:u32 = div %49, 4u
+    %51:u32 = load_vector_element %48, %50
+    %52:u32 = mod %46, 4u
+    %53:bool = eq %52, 0u
+    %54:u32 = hlsl.ternary 16u, 0u, %53
+    %55:u32 = shr %51, %54
+    %56:f32 = hlsl.f16tof32 %55
+    %57:f16 = convert %56
+    %l_a_i_a_i_m_i_i:f16 = let %57
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %67:array<Inner, 4> = call %28, %start_byte_offset
-    %68:Outer = construct %67
-    ret %68
-  }
-}
-%28 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %72:bool = gte %idx, 4u
-        if %72 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %62:bool = gte %idx, 4u
+        if %62 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %73:u32 = mul %idx, 64u
-        %74:u32 = add %start_byte_offset_1, %73
-        %75:ptr<function, Inner, read_write> = access %a_1, %idx
-        %76:Inner = call %34, %74
-        store %75, %76
-        continue  # -> $B8
+        %63:u32 = mul %idx, 256u
+        %64:u32 = add %start_byte_offset, %63
+        %65:ptr<function, Outer, read_write> = access %a_1, %idx
+        %66:Outer = call %21, %64
+        store %65, %66
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %77:u32 = add %idx, 1u
-        next_iteration %77  # -> $B7
+      $B7: {  # continuing
+        %67:u32 = add %idx, 1u
+        next_iteration %67  # -> $B6
       }
     }
-    %78:array<Inner, 4> = load %a_1
-    ret %78
+    %68:array<Outer, 4> = load %a_1
+    ret %68
   }
 }
-%34 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %70:array<Inner, 4> = call %24, %start_byte_offset_1
+    %71:Outer = construct %70
+    ret %71
+  }
+}
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %80:mat4x3<f16> = call %40, %start_byte_offset_2
-    %81:Inner = construct %80
-    ret %81
-  }
-}
-%40 = func(%start_byte_offset_3:u32):mat4x3<f16> {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %83:u32 = div %start_byte_offset_3, 16u
-    %84:ptr<uniform, vec4<u32>, read> = access %a, %83
-    %85:vec4<u32> = load %84
-    %86:vec4<f16> = bitcast %85
-    %87:vec3<f16> = swizzle %86, xyz
-    %88:u32 = add 8u, %start_byte_offset_3
-    %89:u32 = div %88, 16u
-    %90:ptr<uniform, vec4<u32>, read> = access %a, %89
-    %91:vec4<u32> = load %90
-    %92:vec4<f16> = bitcast %91
-    %93:vec3<f16> = swizzle %92, xyz
-    %94:u32 = add 16u, %start_byte_offset_3
-    %95:u32 = div %94, 16u
-    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
-    %97:vec4<u32> = load %96
-    %98:vec4<f16> = bitcast %97
-    %99:vec3<f16> = swizzle %98, xyz
-    %100:u32 = add 24u, %start_byte_offset_3
-    %101:u32 = div %100, 16u
-    %102:ptr<uniform, vec4<u32>, read> = access %a, %101
-    %103:vec4<u32> = load %102
-    %104:vec4<f16> = bitcast %103
-    %105:vec3<f16> = swizzle %104, xyz
-    %106:mat4x3<f16> = construct %87, %93, %99, %105
-    ret %106
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %110:bool = gte %idx_1, 4u
-        if %110 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %75:bool = gte %idx_1, 4u
+        if %75 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %111:u32 = mul %idx_1, 256u
-        %112:u32 = add %start_byte_offset_4, %111
-        %113:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %114:Outer = call %21, %112
-        store %113, %114
-        continue  # -> $B15
+        %76:u32 = mul %idx_1, 64u
+        %77:u32 = add %start_byte_offset_2, %76
+        %78:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %79:Inner = call %28, %77
+        store %78, %79
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %115:u32 = add %idx_1, 1u
-        next_iteration %115  # -> $B14
+      $B13: {  # continuing
+        %80:u32 = add %idx_1, 1u
+        next_iteration %80  # -> $B12
       }
     }
-    %116:array<Outer, 4> = load %a_2
-    ret %116
+    %81:array<Inner, 4> = load %a_2
+    ret %81
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %83:mat4x3<f16> = call %32, %start_byte_offset_3
+    %84:Inner = construct %83
+    ret %84
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat4x3<f16> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %86:u32 = div %start_byte_offset_4, 16u
+    %87:ptr<uniform, vec4<u32>, read> = access %a, %86
+    %88:vec4<u32> = load %87
+    %89:vec4<f16> = bitcast %88
+    %90:vec3<f16> = swizzle %89, xyz
+    %91:u32 = add 8u, %start_byte_offset_4
+    %92:u32 = div %91, 16u
+    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
+    %94:vec4<u32> = load %93
+    %95:vec4<f16> = bitcast %94
+    %96:vec3<f16> = swizzle %95, xyz
+    %97:u32 = add 16u, %start_byte_offset_4
+    %98:u32 = div %97, 16u
+    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
+    %100:vec4<u32> = load %99
+    %101:vec4<f16> = bitcast %100
+    %102:vec3<f16> = swizzle %101, xyz
+    %103:u32 = add 24u, %start_byte_offset_4
+    %104:u32 = div %103, 16u
+    %105:ptr<uniform, vec4<u32>, read> = access %a, %104
+    %106:vec4<u32> = load %105
+    %107:vec4<f16> = bitcast %106
+    %108:vec3<f16> = swizzle %107, xyz
+    %109:mat4x3<f16> = construct %90, %96, %102, %108
+    ret %109
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 43b5578..2f7b3e9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -141,106 +141,106 @@
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%32 = func(%start_byte_offset:u32):mat4x3<f16> {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
-      }
-      $B6 (%idx:u32): {  # body
-        %62:bool = gte %idx, 4u
-        if %62 [t: $B8] {  # if_1
-          $B8: {  # true
-            exit_loop  # loop_1
-          }
-        }
-        %63:u32 = mul %idx, 256u
-        %64:u32 = add %start_byte_offset, %63
-        %65:ptr<function, Outer, read_write> = access %a_1, %idx
-        %66:Outer = call %21, %64
-        store %65, %66
-        continue  # -> $B7
-      }
-      $B7: {  # continuing
-        %67:u32 = add %idx, 1u
-        next_iteration %67  # -> $B6
-      }
-    }
-    %68:array<Outer, 4> = load %a_1
-    ret %68
+    %60:u32 = div %start_byte_offset, 16u
+    %61:ptr<uniform, vec4<u32>, read> = access %a, %60
+    %62:vec4<u32> = load %61
+    %63:vec4<f16> = bitcast %62
+    %64:vec3<f16> = swizzle %63, xyz
+    %65:u32 = add 8u, %start_byte_offset
+    %66:u32 = div %65, 16u
+    %67:ptr<uniform, vec4<u32>, read> = access %a, %66
+    %68:vec4<u32> = load %67
+    %69:vec4<f16> = bitcast %68
+    %70:vec3<f16> = swizzle %69, xyz
+    %71:u32 = add 16u, %start_byte_offset
+    %72:u32 = div %71, 16u
+    %73:ptr<uniform, vec4<u32>, read> = access %a, %72
+    %74:vec4<u32> = load %73
+    %75:vec4<f16> = bitcast %74
+    %76:vec3<f16> = swizzle %75, xyz
+    %77:u32 = add 24u, %start_byte_offset
+    %78:u32 = div %77, 16u
+    %79:ptr<uniform, vec4<u32>, read> = access %a, %78
+    %80:vec4<u32> = load %79
+    %81:vec4<f16> = bitcast %80
+    %82:vec3<f16> = swizzle %81, xyz
+    %83:mat4x3<f16> = construct %64, %70, %76, %82
+    ret %83
   }
 }
-%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %70:array<Inner, 4> = call %24, %start_byte_offset_1
-    %71:Outer = construct %70
-    ret %71
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %85:mat4x3<f16> = call %32, %start_byte_offset_1
+    %86:Inner = construct %85
+    ret %86
   }
 }
 %24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
+  $B6: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))  # %a_1: 'a'
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
       }
-      $B12 (%idx_1:u32): {  # body
-        %75:bool = gte %idx_1, 4u
-        if %75 [t: $B14] {  # if_2
-          $B14: {  # true
+      $B8 (%idx:u32): {  # body
+        %90:bool = gte %idx, 4u
+        if %90 [t: $B10] {  # if_1
+          $B10: {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %91:u32 = mul %idx, 64u
+        %92:u32 = add %start_byte_offset_2, %91
+        %93:ptr<function, Inner, read_write> = access %a_1, %idx
+        %94:Inner = call %28, %92
+        store %93, %94
+        continue  # -> $B9
+      }
+      $B9: {  # continuing
+        %95:u32 = add %idx, 1u
+        next_iteration %95  # -> $B8
+      }
+    }
+    %96:array<Inner, 4> = load %a_1
+    ret %96
+  }
+}
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %98:array<Inner, 4> = call %24, %start_byte_offset_3
+    %99:Outer = construct %98
+    ret %99
+  }
+}
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x3<f16>(vec3<f16>(0.0h))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
+      }
+      $B14 (%idx_1:u32): {  # body
+        %103:bool = gte %idx_1, 4u
+        if %103 [t: $B16] {  # if_2
+          $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %76:u32 = mul %idx_1, 64u
-        %77:u32 = add %start_byte_offset_2, %76
-        %78:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %79:Inner = call %28, %77
-        store %78, %79
-        continue  # -> $B13
+        %104:u32 = mul %idx_1, 256u
+        %105:u32 = add %start_byte_offset_4, %104
+        %106:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %107:Outer = call %21, %105
+        store %106, %107
+        continue  # -> $B15
       }
-      $B13: {  # continuing
-        %80:u32 = add %idx_1, 1u
-        next_iteration %80  # -> $B12
+      $B15: {  # continuing
+        %108:u32 = add %idx_1, 1u
+        next_iteration %108  # -> $B14
       }
     }
-    %81:array<Inner, 4> = load %a_2
-    ret %81
-  }
-}
-%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %83:mat4x3<f16> = call %32, %start_byte_offset_3
-    %84:Inner = construct %83
-    ret %84
-  }
-}
-%32 = func(%start_byte_offset_4:u32):mat4x3<f16> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %86:u32 = div %start_byte_offset_4, 16u
-    %87:ptr<uniform, vec4<u32>, read> = access %a, %86
-    %88:vec4<u32> = load %87
-    %89:vec4<f16> = bitcast %88
-    %90:vec3<f16> = swizzle %89, xyz
-    %91:u32 = add 8u, %start_byte_offset_4
-    %92:u32 = div %91, 16u
-    %93:ptr<uniform, vec4<u32>, read> = access %a, %92
-    %94:vec4<u32> = load %93
-    %95:vec4<f16> = bitcast %94
-    %96:vec3<f16> = swizzle %95, xyz
-    %97:u32 = add 16u, %start_byte_offset_4
-    %98:u32 = div %97, 16u
-    %99:ptr<uniform, vec4<u32>, read> = access %a, %98
-    %100:vec4<u32> = load %99
-    %101:vec4<f16> = bitcast %100
-    %102:vec3<f16> = swizzle %101, xyz
-    %103:u32 = add 24u, %start_byte_offset_4
-    %104:u32 = div %103, 16u
-    %105:ptr<uniform, vec4<u32>, read> = access %a, %104
-    %106:vec4<u32> = load %105
-    %107:vec4<f16> = bitcast %106
-    %108:vec3<f16> = swizzle %107, xyz
-    %109:mat4x3<f16> = construct %90, %96, %102, %108
+    %109:array<Outer, 4> = load %a_2
     ret %109
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index d1e167e..a929b56 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -36,7 +36,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -52,7 +52,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -69,15 +69,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 4, 3> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 4, 3> l_a_3_a_2_m = a_load_4(896u);
   uint2 ubo_load_8 = a[56].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 3> l_a_3_a_2_m_1 = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
+  vector<float16_t, 3> l_a_3_a_2_m_1 = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000204FC5754E0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 5d66eb9..44c1020 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -100,5 +100,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021333975050(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B767D99460(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index 45151e8..efd7ec1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -30,14 +30,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 4> t = transpose(u_load(264u));
+  matrix<float16_t, 3, 4> t = transpose(u_load(264u));
   uint2 ubo_load_8 = u[1].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
+  float16_t l = length(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
   uint2 ubo_load_9 = u[1].xy;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   float16_t ubo_load_9_y = f16tof32(ubo_load_9[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E3F221CCB0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 6d2fabd..c181a71 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018400E7F150(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EF5D86B3F0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
index 58453e3..ac9fb1f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -52,7 +52,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -82,3 +82,6 @@
   e(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A5DFD7C130(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 1ac3ec2..8baf1ce 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -86,5 +86,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AC02CBE6F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C0E5B05AD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
index 85d2e73..1b8b311 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -38,7 +38,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -64,3 +64,6 @@
   p[1].m[0] = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002816EE03CB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 9a51707..4f88a46 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -71,5 +71,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CCD9FEE2F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DFAD58B720(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 04c1a52..2fc015b 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -60,7 +60,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -86,3 +86,6 @@
   s.Store<vector<float16_t, 3> >(136u, vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B2F5BD6CA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 2e79f83..8440622 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -103,5 +103,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000257BFC3F350(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000278774B8550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 7d701e6..19cdc1c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -42,7 +54,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol_3;
 }
 
@@ -58,14 +70,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(264u);
@@ -80,3 +85,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016D2267B720(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 944bbbc..dd78a87 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -96,5 +96,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019C8AE62350(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001653C32CC50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index c6d1da3..eac3e88 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,55 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:43:24 error: binary: %23 is not in scope
-    %29:u32 = add %28, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:51:24 error: binary: %23 is not in scope
-    %39:u32 = add %38, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:56:24 error: binary: %23 is not in scope
-    %45:u32 = add %44, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:64:5 note: %23 declared here
-    %23:u32 = mul %52, 4u
-    ^^^^^^^
-
-:64:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :55:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -106,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %52, 4u
+    %43:u32 = mul %42, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -149,85 +101,76 @@
     %16:u32 = mul 16u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:u32 = add %10, %13
-    %28:u32 = add %27, %16
-    %29:u32 = add %28, %23
-    %30:array<Inner, 4> = call %31, %29
-    %l_a_i_a:array<Inner, 4> = let %30
-    %33:u32 = add %10, %13
-    %34:Inner = call %35, %33
-    %l_a_i_a_i:Inner = let %34
-    %37:u32 = add %10, %13
-    %38:u32 = add %37, %16
-    %39:u32 = add %38, %23
-    %40:mat4x3<f32> = call %41, %39
-    %l_a_i_a_i_m:mat4x3<f32> = let %40
-    %43:u32 = add %10, %13
-    %44:u32 = add %43, %16
-    %45:u32 = add %44, %23
-    %46:u32 = div %45, 16u
-    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
-    %48:vec4<u32> = load %47
-    %49:vec3<u32> = swizzle %48, xyz
-    %50:vec3<f32> = bitcast %49
-    %l_a_i_a_i_m_i:vec3<f32> = let %50
-    %52:i32 = call %i
-    %23:u32 = mul %52, 4u
-    %53:u32 = add %10, %13
-    %54:u32 = add %53, %16
-    %55:u32 = add %54, %23
-    %56:u32 = div %55, 16u
-    %57:ptr<uniform, vec4<u32>, read> = access %a, %56
-    %58:u32 = mod %55, 16u
-    %59:u32 = div %58, 4u
-    %60:u32 = load_vector_element %57, %59
-    %61:f32 = bitcast %60
-    %l_a_i_a_i_m_i_i:f32 = let %61
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
+    %30:u32 = add %10, %13
+    %31:mat4x3<f32> = call %32, %30
+    %l_a_i_a_i_m:mat4x3<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec3<u32> = swizzle %38, xyz
+    %40:vec3<f32> = bitcast %39
+    %l_a_i_a_i_m_i:vec3<f32> = let %40
+    %42:i32 = call %i
+    %43:u32 = mul %42, 4u
+    %44:u32 = add %10, %13
+    %45:u32 = add %44, %16
+    %46:u32 = add %45, %43
+    %47:u32 = div %46, 16u
+    %48:ptr<uniform, vec4<u32>, read> = access %a, %47
+    %49:u32 = mod %46, 16u
+    %50:u32 = div %49, 4u
+    %51:u32 = load_vector_element %48, %50
+    %52:f32 = bitcast %51
+    %l_a_i_a_i_m_i_i:f32 = let %52
     ret
   }
 }
-%35 = func(%start_byte_offset:u32):Inner {
+%32 = func(%start_byte_offset:u32):mat4x3<f32> {
   $B4: {
-    %64:mat4x3<f32> = call %41, %start_byte_offset
-    %65:Inner = construct %64
-    ret %65
-  }
-}
-%41 = func(%start_byte_offset_1:u32):mat4x3<f32> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %67:u32 = div %start_byte_offset_1, 16u
+    %55:u32 = div %start_byte_offset, 16u
+    %56:ptr<uniform, vec4<u32>, read> = access %a, %55
+    %57:vec4<u32> = load %56
+    %58:vec3<u32> = swizzle %57, xyz
+    %59:vec3<f32> = bitcast %58
+    %60:u32 = add 16u, %start_byte_offset
+    %61:u32 = div %60, 16u
+    %62:ptr<uniform, vec4<u32>, read> = access %a, %61
+    %63:vec4<u32> = load %62
+    %64:vec3<u32> = swizzle %63, xyz
+    %65:vec3<f32> = bitcast %64
+    %66:u32 = add 32u, %start_byte_offset
+    %67:u32 = div %66, 16u
     %68:ptr<uniform, vec4<u32>, read> = access %a, %67
     %69:vec4<u32> = load %68
     %70:vec3<u32> = swizzle %69, xyz
     %71:vec3<f32> = bitcast %70
-    %72:u32 = add 16u, %start_byte_offset_1
+    %72:u32 = add 48u, %start_byte_offset
     %73:u32 = div %72, 16u
     %74:ptr<uniform, vec4<u32>, read> = access %a, %73
     %75:vec4<u32> = load %74
     %76:vec3<u32> = swizzle %75, xyz
     %77:vec3<f32> = bitcast %76
-    %78:u32 = add 32u, %start_byte_offset_1
-    %79:u32 = div %78, 16u
-    %80:ptr<uniform, vec4<u32>, read> = access %a, %79
-    %81:vec4<u32> = load %80
-    %82:vec3<u32> = swizzle %81, xyz
-    %83:vec3<f32> = bitcast %82
-    %84:u32 = add 48u, %start_byte_offset_1
-    %85:u32 = div %84, 16u
-    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
-    %87:vec4<u32> = load %86
-    %88:vec3<u32> = swizzle %87, xyz
-    %89:vec3<f32> = bitcast %88
-    %90:mat4x3<f32> = construct %71, %77, %83, %89
-    ret %90
+    %78:mat4x3<f32> = construct %59, %65, %71, %77
+    ret %78
   }
 }
-%31 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %80:mat4x3<f32> = call %32, %start_byte_offset_1
+    %81:Inner = construct %80
+    ret %81
+  }
+}
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B6: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f32>(vec3<f32>(0.0f))))  # %a_1: 'a'
     loop [i: $B7, b: $B8, c: $B9] {  # loop_1
@@ -235,33 +178,33 @@
         next_iteration 0u  # -> $B8
       }
       $B8 (%idx:u32): {  # body
-        %94:bool = gte %idx, 4u
-        if %94 [t: $B10] {  # if_1
+        %85:bool = gte %idx, 4u
+        if %85 [t: $B10] {  # if_1
           $B10: {  # true
             exit_loop  # loop_1
           }
         }
-        %95:u32 = mul %idx, 64u
-        %96:u32 = add %start_byte_offset_2, %95
-        %97:ptr<function, Inner, read_write> = access %a_1, %idx
-        %98:Inner = call %35, %96
-        store %97, %98
+        %86:u32 = mul %idx, 64u
+        %87:u32 = add %start_byte_offset_2, %86
+        %88:ptr<function, Inner, read_write> = access %a_1, %idx
+        %89:Inner = call %28, %87
+        store %88, %89
         continue  # -> $B9
       }
       $B9: {  # continuing
-        %99:u32 = add %idx, 1u
-        next_iteration %99  # -> $B8
+        %90:u32 = add %idx, 1u
+        next_iteration %90  # -> $B8
       }
     }
-    %100:array<Inner, 4> = load %a_1
-    ret %100
+    %91:array<Inner, 4> = load %a_1
+    ret %91
   }
 }
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
   $B11: {
-    %102:array<Inner, 4> = call %31, %start_byte_offset_3
-    %103:Outer = construct %102
-    ret %103
+    %93:array<Inner, 4> = call %24, %start_byte_offset_3
+    %94:Outer = construct %93
+    ret %94
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -272,26 +215,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %107:bool = gte %idx_1, 4u
-        if %107 [t: $B16] {  # if_2
+        %98:bool = gte %idx_1, 4u
+        if %98 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %108:u32 = mul %idx_1, 256u
-        %109:u32 = add %start_byte_offset_4, %108
-        %110:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %111:Outer = call %25, %109
-        store %110, %111
+        %99:u32 = mul %idx_1, 256u
+        %100:u32 = add %start_byte_offset_4, %99
+        %101:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %102:Outer = call %21, %100
+        store %101, %102
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %112:u32 = add %idx_1, 1u
-        next_iteration %112  # -> $B14
+        %103:u32 = add %idx_1, 1u
+        next_iteration %103  # -> $B14
       }
     }
-    %113:array<Outer, 4> = load %a_2
-    ret %113
+    %104:array<Outer, 4> = load %a_2
+    ret %104
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index f4f3c62..4837c66 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -134,106 +134,106 @@
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %55:array<Inner, 4> = call %24, %start_byte_offset
-    %56:Outer = construct %55
-    ret %56
-  }
-}
-%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f32>(vec3<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x3<f32>(vec3<f32>(0.0f))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %60:bool = gte %idx, 4u
-        if %60 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %57:bool = gte %idx, 4u
+        if %57 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %61:u32 = mul %idx, 64u
-        %62:u32 = add %start_byte_offset_1, %61
-        %63:ptr<function, Inner, read_write> = access %a_1, %idx
-        %64:Inner = call %28, %62
-        store %63, %64
-        continue  # -> $B8
+        %58:u32 = mul %idx, 256u
+        %59:u32 = add %start_byte_offset, %58
+        %60:ptr<function, Outer, read_write> = access %a_1, %idx
+        %61:Outer = call %21, %59
+        store %60, %61
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %65:u32 = add %idx, 1u
-        next_iteration %65  # -> $B7
+      $B7: {  # continuing
+        %62:u32 = add %idx, 1u
+        next_iteration %62  # -> $B6
       }
     }
-    %66:array<Inner, 4> = load %a_1
+    %63:array<Outer, 4> = load %a_1
+    ret %63
+  }
+}
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %65:array<Inner, 4> = call %24, %start_byte_offset_1
+    %66:Outer = construct %65
     ret %66
   }
 }
-%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %68:mat4x3<f32> = call %32, %start_byte_offset_2
-    %69:Inner = construct %68
-    ret %69
-  }
-}
-%32 = func(%start_byte_offset_3:u32):mat4x3<f32> {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %71:u32 = div %start_byte_offset_3, 16u
-    %72:ptr<uniform, vec4<u32>, read> = access %a, %71
-    %73:vec4<u32> = load %72
-    %74:vec3<u32> = swizzle %73, xyz
-    %75:vec3<f32> = bitcast %74
-    %76:u32 = add 16u, %start_byte_offset_3
-    %77:u32 = div %76, 16u
-    %78:ptr<uniform, vec4<u32>, read> = access %a, %77
-    %79:vec4<u32> = load %78
-    %80:vec3<u32> = swizzle %79, xyz
-    %81:vec3<f32> = bitcast %80
-    %82:u32 = add 32u, %start_byte_offset_3
-    %83:u32 = div %82, 16u
-    %84:ptr<uniform, vec4<u32>, read> = access %a, %83
-    %85:vec4<u32> = load %84
-    %86:vec3<u32> = swizzle %85, xyz
-    %87:vec3<f32> = bitcast %86
-    %88:u32 = add 48u, %start_byte_offset_3
-    %89:u32 = div %88, 16u
-    %90:ptr<uniform, vec4<u32>, read> = access %a, %89
-    %91:vec4<u32> = load %90
-    %92:vec3<u32> = swizzle %91, xyz
-    %93:vec3<f32> = bitcast %92
-    %94:mat4x3<f32> = construct %75, %81, %87, %93
-    ret %94
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x3<f32>(vec3<f32>(0.0f))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x3<f32>(vec3<f32>(0.0f))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
       }
-      $B14 (%idx_1:u32): {  # body
-        %98:bool = gte %idx_1, 4u
-        if %98 [t: $B16] {  # if_2
-          $B16: {  # true
+      $B12 (%idx_1:u32): {  # body
+        %70:bool = gte %idx_1, 4u
+        if %70 [t: $B14] {  # if_2
+          $B14: {  # true
             exit_loop  # loop_2
           }
         }
-        %99:u32 = mul %idx_1, 256u
-        %100:u32 = add %start_byte_offset_4, %99
-        %101:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %102:Outer = call %21, %100
-        store %101, %102
-        continue  # -> $B15
+        %71:u32 = mul %idx_1, 64u
+        %72:u32 = add %start_byte_offset_2, %71
+        %73:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %74:Inner = call %28, %72
+        store %73, %74
+        continue  # -> $B13
       }
-      $B15: {  # continuing
-        %103:u32 = add %idx_1, 1u
-        next_iteration %103  # -> $B14
+      $B13: {  # continuing
+        %75:u32 = add %idx_1, 1u
+        next_iteration %75  # -> $B12
       }
     }
-    %104:array<Outer, 4> = load %a_2
+    %76:array<Inner, 4> = load %a_2
+    ret %76
+  }
+}
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %78:mat4x3<f32> = call %32, %start_byte_offset_3
+    %79:Inner = construct %78
+    ret %79
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat4x3<f32> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %81:u32 = div %start_byte_offset_4, 16u
+    %82:ptr<uniform, vec4<u32>, read> = access %a, %81
+    %83:vec4<u32> = load %82
+    %84:vec3<u32> = swizzle %83, xyz
+    %85:vec3<f32> = bitcast %84
+    %86:u32 = add 16u, %start_byte_offset_4
+    %87:u32 = div %86, 16u
+    %88:ptr<uniform, vec4<u32>, read> = access %a, %87
+    %89:vec4<u32> = load %88
+    %90:vec3<u32> = swizzle %89, xyz
+    %91:vec3<f32> = bitcast %90
+    %92:u32 = add 32u, %start_byte_offset_4
+    %93:u32 = div %92, 16u
+    %94:ptr<uniform, vec4<u32>, read> = access %a, %93
+    %95:vec4<u32> = load %94
+    %96:vec3<u32> = swizzle %95, xyz
+    %97:vec3<f32> = bitcast %96
+    %98:u32 = add 48u, %start_byte_offset_4
+    %99:u32 = div %98, 16u
+    %100:ptr<uniform, vec4<u32>, read> = access %a, %99
+    %101:vec4<u32> = load %100
+    %102:vec3<u32> = swizzle %101, xyz
+    %103:vec3<f32> = bitcast %102
+    %104:mat4x3<f32> = construct %85, %91, %97, %103
     ret %104
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index e9eba1a..e2c8a15 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -42,7 +42,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol_4 = {a_load_4((offset + 0u))};
+  Inner tint_symbol_4 = {a_load_4((offset + 0u))};
   return tint_symbol_4;
 }
 
@@ -58,7 +58,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_5 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_5 = {a_load_2((offset + 0u))};
   return tint_symbol_5;
 }
 
@@ -75,26 +75,29 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_a_i_save = i();
-  const int p_a_i_a_i_save = i();
-  const int p_a_i_a_i_m_i_save = i();
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
-  const Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
-  const matrix<float16_t, 4, 4> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  int p_a_i_save = i();
+  int p_a_i_a_i_save = i();
+  int p_a_i_a_i_m_i_save = i();
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_i = a_load_1((256u * uint(p_a_i_save)));
+  Inner l_a_i_a[4] = a_load_2((256u * uint(p_a_i_save)));
+  Inner l_a_i_a_i = a_load_3(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
+  matrix<float16_t, 4, 4> l_a_i_a_i_m = a_load_4(((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))));
   const uint scalar_offset_4 = ((((256u * uint(p_a_i_save)) + (64u * uint(p_a_i_a_i_save))) + (8u * uint(p_a_i_a_i_m_i_save)))) / 4;
   uint4 ubo_load_9 = a[scalar_offset_4 / 4];
   uint2 ubo_load_8 = ((scalar_offset_4 & 2) ? ubo_load_9.zw : ubo_load_9.xy);
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const vector<float16_t, 4> l_a_i_a_i_m_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
-  const int tint_symbol = p_a_i_save;
-  const int tint_symbol_1 = p_a_i_a_i_save;
-  const int tint_symbol_2 = p_a_i_a_i_m_i_save;
-  const int tint_symbol_3 = i();
+  vector<float16_t, 4> l_a_i_a_i_m_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  int tint_symbol = p_a_i_save;
+  int tint_symbol_1 = p_a_i_a_i_save;
+  int tint_symbol_2 = p_a_i_a_i_m_i_save;
+  int tint_symbol_3 = i();
   const uint scalar_offset_bytes = (((((256u * uint(tint_symbol)) + (64u * uint(tint_symbol_1))) + (8u * uint(tint_symbol_2))) + (2u * uint(tint_symbol_3))));
   const uint scalar_offset_index = scalar_offset_bytes / 4;
-  const float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
+  float16_t l_a_i_a_i_m_i_i = float16_t(f16tof32(((a[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027BD3A0A710(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 55015b7..1800362 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -38,31 +38,7 @@
   let l_a_i_a_i_m_i_i : f16 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :40:24 error: binary: %26 is not in scope
-    %25:u32 = add %24, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:59:5 note: %26 declared here
-    %26:u32 = mul %47, 2u
-    ^^^^^^^
-
-:48:24 error: binary: %26 is not in scope
-    %36:u32 = add %35, %26
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:59:5 note: %26 declared here
-    %26:u32 = mul %47, 2u
-    ^^^^^^^
-
-:59:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :54:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -84,7 +60,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %26:u32 = mul %47, 2u
+    %42:u32 = mul %41, 2u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -129,143 +105,138 @@
     %l_a:array<Outer, 4> = let %17
     %20:Outer = call %21, %10
     %l_a_i:Outer = let %20
-    %23:u32 = add %10, %13
-    %24:u32 = add %23, %16
-    %25:u32 = add %24, %26
-    %27:array<Inner, 4> = call %28, %25
-    %l_a_i_a:array<Inner, 4> = let %27
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:Inner = call %32, %30
-    %l_a_i_a_i:Inner = let %31
+    %31:mat4x4<f16> = call %32, %30
+    %l_a_i_a_i_m:mat4x4<f16> = let %31
     %34:u32 = add %10, %13
     %35:u32 = add %34, %16
-    %36:u32 = add %35, %26
-    %37:mat4x4<f16> = call %38, %36
-    %l_a_i_a_i_m:mat4x4<f16> = let %37
-    %40:u32 = add %10, %13
-    %41:u32 = add %40, %16
-    %42:u32 = div %41, 16u
-    %43:ptr<uniform, vec4<u32>, read> = access %a, %42
-    %44:vec4<u32> = load %43
-    %45:vec4<f16> = bitcast %44
-    %l_a_i_a_i_m_i:vec4<f16> = let %45
-    %47:i32 = call %i
-    %26:u32 = mul %47, 2u
-    %48:u32 = add %10, %13
-    %49:u32 = add %48, %16
-    %50:u32 = add %49, %26
-    %51:u32 = div %50, 16u
-    %52:ptr<uniform, vec4<u32>, read> = access %a, %51
-    %53:u32 = mod %50, 16u
-    %54:u32 = div %53, 4u
-    %55:u32 = load_vector_element %52, %54
-    %56:u32 = mod %50, 4u
-    %57:bool = eq %56, 0u
-    %58:u32 = hlsl.ternary 16u, 0u, %57
-    %59:u32 = shr %55, %58
-    %60:f32 = hlsl.f16tof32 %59
-    %61:f16 = convert %60
-    %l_a_i_a_i_m_i_i:f16 = let %61
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f16> = bitcast %38
+    %l_a_i_a_i_m_i:vec4<f16> = let %39
+    %41:i32 = call %i
+    %42:u32 = mul %41, 2u
+    %43:u32 = add %10, %13
+    %44:u32 = add %43, %16
+    %45:u32 = add %44, %42
+    %46:u32 = div %45, 16u
+    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
+    %48:u32 = mod %45, 16u
+    %49:u32 = div %48, 4u
+    %50:u32 = load_vector_element %47, %49
+    %51:u32 = mod %45, 4u
+    %52:bool = eq %51, 0u
+    %53:u32 = hlsl.ternary 16u, 0u, %52
+    %54:u32 = shr %50, %53
+    %55:f32 = hlsl.f16tof32 %54
+    %56:f16 = convert %55
+    %l_a_i_a_i_m_i_i:f16 = let %56
     ret
   }
 }
-%21 = func(%start_byte_offset:u32):Outer {
+%18 = func(%start_byte_offset:u32):array<Outer, 4> {
   $B4: {
-    %64:array<Inner, 4> = call %28, %start_byte_offset
-    %65:Outer = construct %64
-    ret %65
-  }
-}
-%28 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
-  $B5: {
-    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))  # %a_1: 'a'
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        next_iteration 0u  # -> $B7
+    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))))  # %a_1: 'a'
+    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
+      $B5: {  # initializer
+        next_iteration 0u  # -> $B6
       }
-      $B7 (%idx:u32): {  # body
-        %69:bool = gte %idx, 4u
-        if %69 [t: $B9] {  # if_1
-          $B9: {  # true
+      $B6 (%idx:u32): {  # body
+        %61:bool = gte %idx, 4u
+        if %61 [t: $B8] {  # if_1
+          $B8: {  # true
             exit_loop  # loop_1
           }
         }
-        %70:u32 = mul %idx, 64u
-        %71:u32 = add %start_byte_offset_1, %70
-        %72:ptr<function, Inner, read_write> = access %a_1, %idx
-        %73:Inner = call %32, %71
-        store %72, %73
-        continue  # -> $B8
+        %62:u32 = mul %idx, 256u
+        %63:u32 = add %start_byte_offset, %62
+        %64:ptr<function, Outer, read_write> = access %a_1, %idx
+        %65:Outer = call %21, %63
+        store %64, %65
+        continue  # -> $B7
       }
-      $B8: {  # continuing
-        %74:u32 = add %idx, 1u
-        next_iteration %74  # -> $B7
+      $B7: {  # continuing
+        %66:u32 = add %idx, 1u
+        next_iteration %66  # -> $B6
       }
     }
-    %75:array<Inner, 4> = load %a_1
-    ret %75
+    %67:array<Outer, 4> = load %a_1
+    ret %67
   }
 }
-%32 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
+%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
+  $B9: {
+    %69:array<Inner, 4> = call %24, %start_byte_offset_1
+    %70:Outer = construct %69
+    ret %70
+  }
+}
+%24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %77:mat4x4<f16> = call %38, %start_byte_offset_2
-    %78:Inner = construct %77
-    ret %78
+    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))  # %a_2: 'a'
+    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
+      $B11: {  # initializer
+        next_iteration 0u  # -> $B12
+      }
+      $B12 (%idx_1:u32): {  # body
+        %74:bool = gte %idx_1, 4u
+        if %74 [t: $B14] {  # if_2
+          $B14: {  # true
+            exit_loop  # loop_2
+          }
+        }
+        %75:u32 = mul %idx_1, 64u
+        %76:u32 = add %start_byte_offset_2, %75
+        %77:ptr<function, Inner, read_write> = access %a_2, %idx_1
+        %78:Inner = call %28, %76
+        store %77, %78
+        continue  # -> $B13
+      }
+      $B13: {  # continuing
+        %79:u32 = add %idx_1, 1u
+        next_iteration %79  # -> $B12
+      }
+    }
+    %80:array<Inner, 4> = load %a_2
+    ret %80
   }
 }
-%38 = func(%start_byte_offset_3:u32):mat4x4<f16> {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %80:u32 = div %start_byte_offset_3, 16u
-    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
-    %82:vec4<u32> = load %81
-    %83:vec4<f16> = bitcast %82
-    %84:u32 = add 8u, %start_byte_offset_3
-    %85:u32 = div %84, 16u
+%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
+  $B15: {
+    %82:mat4x4<f16> = call %32, %start_byte_offset_3
+    %83:Inner = construct %82
+    ret %83
+  }
+}
+%32 = func(%start_byte_offset_4:u32):mat4x4<f16> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B16: {
+    %85:u32 = div %start_byte_offset_4, 16u
     %86:ptr<uniform, vec4<u32>, read> = access %a, %85
     %87:vec4<u32> = load %86
     %88:vec4<f16> = bitcast %87
-    %89:u32 = add 16u, %start_byte_offset_3
+    %89:u32 = add 8u, %start_byte_offset_4
     %90:u32 = div %89, 16u
     %91:ptr<uniform, vec4<u32>, read> = access %a, %90
     %92:vec4<u32> = load %91
     %93:vec4<f16> = bitcast %92
-    %94:u32 = add 24u, %start_byte_offset_3
+    %94:u32 = add 16u, %start_byte_offset_4
     %95:u32 = div %94, 16u
     %96:ptr<uniform, vec4<u32>, read> = access %a, %95
     %97:vec4<u32> = load %96
     %98:vec4<f16> = bitcast %97
-    %99:mat4x4<f16> = construct %83, %88, %93, %98
-    ret %99
-  }
-}
-%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B12: {
-    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))))  # %a_2: 'a'
-    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
-      $B13: {  # initializer
-        next_iteration 0u  # -> $B14
-      }
-      $B14 (%idx_1:u32): {  # body
-        %103:bool = gte %idx_1, 4u
-        if %103 [t: $B16] {  # if_2
-          $B16: {  # true
-            exit_loop  # loop_2
-          }
-        }
-        %104:u32 = mul %idx_1, 256u
-        %105:u32 = add %start_byte_offset_4, %104
-        %106:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %107:Outer = call %21, %105
-        store %106, %107
-        continue  # -> $B15
-      }
-      $B15: {  # continuing
-        %108:u32 = add %idx_1, 1u
-        next_iteration %108  # -> $B14
-      }
-    }
-    %109:array<Outer, 4> = load %a_2
-    ret %109
+    %99:u32 = add 24u, %start_byte_offset_4
+    %100:u32 = div %99, 16u
+    %101:ptr<uniform, vec4<u32>, read> = access %a, %100
+    %102:vec4<u32> = load %101
+    %103:vec4<f16> = bitcast %102
+    %104:mat4x4<f16> = construct %88, %93, %98, %103
+    ret %104
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 1800362..9a5f0ab 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -140,102 +140,102 @@
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%32 = func(%start_byte_offset:u32):mat4x4<f16> {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
-      }
-      $B6 (%idx:u32): {  # body
-        %61:bool = gte %idx, 4u
-        if %61 [t: $B8] {  # if_1
-          $B8: {  # true
-            exit_loop  # loop_1
-          }
-        }
-        %62:u32 = mul %idx, 256u
-        %63:u32 = add %start_byte_offset, %62
-        %64:ptr<function, Outer, read_write> = access %a_1, %idx
-        %65:Outer = call %21, %63
-        store %64, %65
-        continue  # -> $B7
-      }
-      $B7: {  # continuing
-        %66:u32 = add %idx, 1u
-        next_iteration %66  # -> $B6
-      }
-    }
-    %67:array<Outer, 4> = load %a_1
-    ret %67
+    %59:u32 = div %start_byte_offset, 16u
+    %60:ptr<uniform, vec4<u32>, read> = access %a, %59
+    %61:vec4<u32> = load %60
+    %62:vec4<f16> = bitcast %61
+    %63:u32 = add 8u, %start_byte_offset
+    %64:u32 = div %63, 16u
+    %65:ptr<uniform, vec4<u32>, read> = access %a, %64
+    %66:vec4<u32> = load %65
+    %67:vec4<f16> = bitcast %66
+    %68:u32 = add 16u, %start_byte_offset
+    %69:u32 = div %68, 16u
+    %70:ptr<uniform, vec4<u32>, read> = access %a, %69
+    %71:vec4<u32> = load %70
+    %72:vec4<f16> = bitcast %71
+    %73:u32 = add 24u, %start_byte_offset
+    %74:u32 = div %73, 16u
+    %75:ptr<uniform, vec4<u32>, read> = access %a, %74
+    %76:vec4<u32> = load %75
+    %77:vec4<f16> = bitcast %76
+    %78:mat4x4<f16> = construct %62, %67, %72, %77
+    ret %78
   }
 }
-%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %69:array<Inner, 4> = call %24, %start_byte_offset_1
-    %70:Outer = construct %69
-    ret %70
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %80:mat4x4<f16> = call %32, %start_byte_offset_1
+    %81:Inner = construct %80
+    ret %81
   }
 }
 %24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
+  $B6: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))  # %a_1: 'a'
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
       }
-      $B12 (%idx_1:u32): {  # body
-        %74:bool = gte %idx_1, 4u
-        if %74 [t: $B14] {  # if_2
-          $B14: {  # true
+      $B8 (%idx:u32): {  # body
+        %85:bool = gte %idx, 4u
+        if %85 [t: $B10] {  # if_1
+          $B10: {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %86:u32 = mul %idx, 64u
+        %87:u32 = add %start_byte_offset_2, %86
+        %88:ptr<function, Inner, read_write> = access %a_1, %idx
+        %89:Inner = call %28, %87
+        store %88, %89
+        continue  # -> $B9
+      }
+      $B9: {  # continuing
+        %90:u32 = add %idx, 1u
+        next_iteration %90  # -> $B8
+      }
+    }
+    %91:array<Inner, 4> = load %a_1
+    ret %91
+  }
+}
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %93:array<Inner, 4> = call %24, %start_byte_offset_3
+    %94:Outer = construct %93
+    ret %94
+  }
+}
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x4<f16>(vec4<f16>(0.0h))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
+      }
+      $B14 (%idx_1:u32): {  # body
+        %98:bool = gte %idx_1, 4u
+        if %98 [t: $B16] {  # if_2
+          $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %75:u32 = mul %idx_1, 64u
-        %76:u32 = add %start_byte_offset_2, %75
-        %77:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %78:Inner = call %28, %76
-        store %77, %78
-        continue  # -> $B13
+        %99:u32 = mul %idx_1, 256u
+        %100:u32 = add %start_byte_offset_4, %99
+        %101:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %102:Outer = call %21, %100
+        store %101, %102
+        continue  # -> $B15
       }
-      $B13: {  # continuing
-        %79:u32 = add %idx_1, 1u
-        next_iteration %79  # -> $B12
+      $B15: {  # continuing
+        %103:u32 = add %idx_1, 1u
+        next_iteration %103  # -> $B14
       }
     }
-    %80:array<Inner, 4> = load %a_2
-    ret %80
-  }
-}
-%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %82:mat4x4<f16> = call %32, %start_byte_offset_3
-    %83:Inner = construct %82
-    ret %83
-  }
-}
-%32 = func(%start_byte_offset_4:u32):mat4x4<f16> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %85:u32 = div %start_byte_offset_4, 16u
-    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
-    %87:vec4<u32> = load %86
-    %88:vec4<f16> = bitcast %87
-    %89:u32 = add 8u, %start_byte_offset_4
-    %90:u32 = div %89, 16u
-    %91:ptr<uniform, vec4<u32>, read> = access %a, %90
-    %92:vec4<u32> = load %91
-    %93:vec4<f16> = bitcast %92
-    %94:u32 = add 16u, %start_byte_offset_4
-    %95:u32 = div %94, 16u
-    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
-    %97:vec4<u32> = load %96
-    %98:vec4<f16> = bitcast %97
-    %99:u32 = add 24u, %start_byte_offset_4
-    %100:u32 = div %99, 16u
-    %101:ptr<uniform, vec4<u32>, read> = access %a, %100
-    %102:vec4<u32> = load %101
-    %103:vec4<f16> = bitcast %102
-    %104:mat4x4<f16> = construct %88, %93, %98, %103
+    %104:array<Outer, 4> = load %a_2
     ret %104
   }
 }
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index c05be9a..70fd059 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -36,7 +36,7 @@
 }
 
 Inner a_load_3(uint offset) {
-  const Inner tint_symbol = {a_load_4((offset + 0u))};
+  Inner tint_symbol = {a_load_4((offset + 0u))};
   return tint_symbol;
 }
 
@@ -52,7 +52,7 @@
 }
 
 Outer a_load_1(uint offset) {
-  const Outer tint_symbol_1 = {a_load_2((offset + 0u))};
+  Outer tint_symbol_1 = {a_load_2((offset + 0u))};
   return tint_symbol_1;
 }
 
@@ -69,15 +69,18 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const Outer l_a[4] = a_load(0u);
-  const Outer l_a_3 = a_load_1(768u);
-  const Inner l_a_3_a[4] = a_load_2(768u);
-  const Inner l_a_3_a_2 = a_load_3(896u);
-  const matrix<float16_t, 4, 4> l_a_3_a_2_m = a_load_4(896u);
+  Outer l_a[4] = a_load(0u);
+  Outer l_a_3 = a_load_1(768u);
+  Inner l_a_3_a[4] = a_load_2(768u);
+  Inner l_a_3_a_2 = a_load_3(896u);
+  matrix<float16_t, 4, 4> l_a_3_a_2_m = a_load_4(896u);
   uint2 ubo_load_8 = a[56].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const vector<float16_t, 4> l_a_3_a_2_m_1 = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
-  const float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
+  vector<float16_t, 4> l_a_3_a_2_m_1 = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  float16_t l_a_3_a_2_m_1_0 = float16_t(f16tof32(((a[56].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001583C853CC0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 1adf233..6f2f1b0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -100,5 +100,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017194FC2490(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018CED2398A0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index 010f655..8f63eea 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -30,14 +30,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 4> t = transpose(u_load(264u));
+  matrix<float16_t, 4, 4> t = transpose(u_load(264u));
   uint2 ubo_load_8 = u[1].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
+  float16_t l = length(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
   uint2 ubo_load_9 = u[1].xy;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   vector<float16_t, 2> ubo_load_9_yw = vector<float16_t, 2>(f16tof32(ubo_load_9 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9F94A5210(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index be8c1c4..7ea407e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F85A26EB80(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025CA9F3A500(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
index c01a377..d4c3566 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -52,7 +52,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -82,3 +82,6 @@
   e(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027B05261200(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 02e2e76..a46098b 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -86,5 +86,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023554592FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002502BC85AA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
index 12372c4..04344b9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -38,7 +38,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -64,3 +64,6 @@
   p[1].m[0] = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz;
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000297E71F4D00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 1e7c9af..890021c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -71,5 +71,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002493D462540(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E4F6659FF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
index c6b3ee0..20da339 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -60,7 +60,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol;
 }
 
@@ -86,3 +86,6 @@
   s.Store<vector<float16_t, 4> >(136u, vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028E58F3B720(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 0b94f3b..26e59e5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -103,5 +103,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A419715050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000141BBEAC660(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index d19fb3e..45d1684 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -6,10 +6,22 @@
   int after;
 };
 
+groupshared S w[4];
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  {
+    for(uint idx = local_idx; (idx < 4u); idx = (idx + 1u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      w[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[32];
 };
-groupshared S w[4];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -42,7 +54,7 @@
 S u_load_1(uint offset) {
   const uint scalar_offset_4 = ((offset + 0u)) / 4;
   const uint scalar_offset_5 = ((offset + 64u)) / 4;
-  const S tint_symbol_3 = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
+  S tint_symbol_3 = {asint(u[scalar_offset_4 / 4][scalar_offset_4 % 4]), u_load_3((offset + 8u)), asint(u[scalar_offset_5 / 4][scalar_offset_5 % 4])};
   return tint_symbol_3;
 }
 
@@ -58,14 +70,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    for(uint idx = local_invocation_index; (idx < 4u); idx = (idx + 1u)) {
-      const uint i = idx;
-      const S tint_symbol_2 = (S)0;
-      w[i] = tint_symbol_2;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   w[1] = u_load_1(256u);
   w[3].m = u_load_3(264u);
@@ -80,3 +85,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E277497FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 05a0972..c3055ce 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -96,5 +96,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B0644D4100(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F478A68000(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
index 7ba3d09..484df98 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.dxc.hlsl
@@ -36,55 +36,7 @@
   let l_a_i_a_i_m_i_i : f32 = (*(p_a_i_a_i_m_i))[i()];
 }
 
-Failed to generate: :38:24 error: binary: %23 is not in scope
-    %22:u32 = add %21, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %23 declared here
-    %23:u32 = mul %50, 4u
-    ^^^^^^^
-
-:45:24 error: binary: %23 is not in scope
-    %32:u32 = add %31, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %23 declared here
-    %23:u32 = mul %50, 4u
-    ^^^^^^^
-
-:50:24 error: binary: %23 is not in scope
-    %38:u32 = add %37, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %23 declared here
-    %23:u32 = mul %50, 4u
-    ^^^^^^^
-
-:55:24 error: binary: %23 is not in scope
-    %44:u32 = add %43, %23
-                       ^^^
-
-:24:3 note: in block
-  $B3: {
-  ^^^
-
-:62:5 note: %23 declared here
-    %23:u32 = mul %50, 4u
-    ^^^^^^^
-
-:62:5 error: binary: no matching overload for 'operator * (i32, u32)'
+Failed to generate: :54:5 error: binary: no matching overload for 'operator * (i32, u32)'
 
 9 candidate operators:
  • 'operator * (T  ✓ , T  ✗ ) -> T' where:
@@ -106,7 +58,7 @@
  • 'operator * (matKxR<T>  ✗ , matCxK<T>  ✗ ) -> matCxR<T>' where:
       ✗  'T' is 'f32' or 'f16'
 
-    %23:u32 = mul %50, 4u
+    %42:u32 = mul %41, 4u
     ^^^^^^^^^^^^^^^^^^^^^
 
 :24:3 note: in block
@@ -149,113 +101,105 @@
     %16:u32 = mul 16u, %15
     %17:array<Outer, 4> = call %18, 0u
     %l_a:array<Outer, 4> = let %17
-    %20:u32 = add %10, %13
-    %21:u32 = add %20, %16
-    %22:u32 = add %21, %23
-    %24:Outer = call %25, %22
-    %l_a_i:Outer = let %24
-    %27:array<Inner, 4> = call %28, %10
-    %l_a_i_a:array<Inner, 4> = let %27
+    %20:Outer = call %21, %10
+    %l_a_i:Outer = let %20
+    %23:array<Inner, 4> = call %24, %10
+    %l_a_i_a:array<Inner, 4> = let %23
+    %26:u32 = add %10, %13
+    %27:Inner = call %28, %26
+    %l_a_i_a_i:Inner = let %27
     %30:u32 = add %10, %13
-    %31:u32 = add %30, %16
-    %32:u32 = add %31, %23
-    %33:Inner = call %34, %32
-    %l_a_i_a_i:Inner = let %33
-    %36:u32 = add %10, %13
-    %37:u32 = add %36, %16
-    %38:u32 = add %37, %23
-    %39:mat4x4<f32> = call %40, %38
-    %l_a_i_a_i_m:mat4x4<f32> = let %39
-    %42:u32 = add %10, %13
-    %43:u32 = add %42, %16
-    %44:u32 = add %43, %23
-    %45:u32 = div %44, 16u
-    %46:ptr<uniform, vec4<u32>, read> = access %a, %45
-    %47:vec4<u32> = load %46
-    %48:vec4<f32> = bitcast %47
-    %l_a_i_a_i_m_i:vec4<f32> = let %48
-    %50:i32 = call %i
-    %23:u32 = mul %50, 4u
-    %51:u32 = add %10, %13
-    %52:u32 = add %51, %16
-    %53:u32 = add %52, %23
-    %54:u32 = div %53, 16u
-    %55:ptr<uniform, vec4<u32>, read> = access %a, %54
-    %56:u32 = mod %53, 16u
-    %57:u32 = div %56, 4u
-    %58:u32 = load_vector_element %55, %57
-    %59:f32 = bitcast %58
-    %l_a_i_a_i_m_i_i:f32 = let %59
+    %31:mat4x4<f32> = call %32, %30
+    %l_a_i_a_i_m:mat4x4<f32> = let %31
+    %34:u32 = add %10, %13
+    %35:u32 = add %34, %16
+    %36:u32 = div %35, 16u
+    %37:ptr<uniform, vec4<u32>, read> = access %a, %36
+    %38:vec4<u32> = load %37
+    %39:vec4<f32> = bitcast %38
+    %l_a_i_a_i_m_i:vec4<f32> = let %39
+    %41:i32 = call %i
+    %42:u32 = mul %41, 4u
+    %43:u32 = add %10, %13
+    %44:u32 = add %43, %16
+    %45:u32 = add %44, %42
+    %46:u32 = div %45, 16u
+    %47:ptr<uniform, vec4<u32>, read> = access %a, %46
+    %48:u32 = mod %45, 16u
+    %49:u32 = div %48, 4u
+    %50:u32 = load_vector_element %47, %49
+    %51:f32 = bitcast %50
+    %l_a_i_a_i_m_i_i:f32 = let %51
     ret
   }
 }
-%28 = func(%start_byte_offset:u32):array<Inner, 4> {
+%21 = func(%start_byte_offset:u32):Outer {
   $B4: {
+    %54:array<Inner, 4> = call %24, %start_byte_offset
+    %55:Outer = construct %54
+    ret %55
+  }
+}
+%24 = func(%start_byte_offset_1:u32):array<Inner, 4> {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
     %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f32>(vec4<f32>(0.0f))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
+    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
+      $B6: {  # initializer
+        next_iteration 0u  # -> $B7
       }
-      $B6 (%idx:u32): {  # body
-        %64:bool = gte %idx, 4u
-        if %64 [t: $B8] {  # if_1
-          $B8: {  # true
+      $B7 (%idx:u32): {  # body
+        %59:bool = gte %idx, 4u
+        if %59 [t: $B9] {  # if_1
+          $B9: {  # true
             exit_loop  # loop_1
           }
         }
-        %65:u32 = mul %idx, 64u
-        %66:u32 = add %start_byte_offset, %65
-        %67:ptr<function, Inner, read_write> = access %a_1, %idx
-        %68:Inner = call %34, %66
-        store %67, %68
-        continue  # -> $B7
+        %60:u32 = mul %idx, 64u
+        %61:u32 = add %start_byte_offset_1, %60
+        %62:ptr<function, Inner, read_write> = access %a_1, %idx
+        %63:Inner = call %28, %61
+        store %62, %63
+        continue  # -> $B8
       }
-      $B7: {  # continuing
-        %69:u32 = add %idx, 1u
-        next_iteration %69  # -> $B6
+      $B8: {  # continuing
+        %64:u32 = add %idx, 1u
+        next_iteration %64  # -> $B7
       }
     }
-    %70:array<Inner, 4> = load %a_1
-    ret %70
+    %65:array<Inner, 4> = load %a_1
+    ret %65
   }
 }
-%34 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %72:mat4x4<f32> = call %40, %start_byte_offset_1
-    %73:Inner = construct %72
-    ret %73
-  }
-}
-%40 = func(%start_byte_offset_2:u32):mat4x4<f32> {  # %start_byte_offset_2: 'start_byte_offset'
+%28 = func(%start_byte_offset_2:u32):Inner {  # %start_byte_offset_2: 'start_byte_offset'
   $B10: {
-    %75:u32 = div %start_byte_offset_2, 16u
+    %67:mat4x4<f32> = call %32, %start_byte_offset_2
+    %68:Inner = construct %67
+    ret %68
+  }
+}
+%32 = func(%start_byte_offset_3:u32):mat4x4<f32> {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %70:u32 = div %start_byte_offset_3, 16u
+    %71:ptr<uniform, vec4<u32>, read> = access %a, %70
+    %72:vec4<u32> = load %71
+    %73:vec4<f32> = bitcast %72
+    %74:u32 = add 16u, %start_byte_offset_3
+    %75:u32 = div %74, 16u
     %76:ptr<uniform, vec4<u32>, read> = access %a, %75
     %77:vec4<u32> = load %76
     %78:vec4<f32> = bitcast %77
-    %79:u32 = add 16u, %start_byte_offset_2
+    %79:u32 = add 32u, %start_byte_offset_3
     %80:u32 = div %79, 16u
     %81:ptr<uniform, vec4<u32>, read> = access %a, %80
     %82:vec4<u32> = load %81
     %83:vec4<f32> = bitcast %82
-    %84:u32 = add 32u, %start_byte_offset_2
+    %84:u32 = add 48u, %start_byte_offset_3
     %85:u32 = div %84, 16u
     %86:ptr<uniform, vec4<u32>, read> = access %a, %85
     %87:vec4<u32> = load %86
     %88:vec4<f32> = bitcast %87
-    %89:u32 = add 48u, %start_byte_offset_2
-    %90:u32 = div %89, 16u
-    %91:ptr<uniform, vec4<u32>, read> = access %a, %90
-    %92:vec4<u32> = load %91
-    %93:vec4<f32> = bitcast %92
-    %94:mat4x4<f32> = construct %78, %83, %88, %93
-    ret %94
-  }
-}
-%25 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
-  $B11: {
-    %96:array<Inner, 4> = call %28, %start_byte_offset_3
-    %97:Outer = construct %96
-    ret %97
+    %89:mat4x4<f32> = construct %73, %78, %83, %88
+    ret %89
   }
 }
 %18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
@@ -266,26 +210,26 @@
         next_iteration 0u  # -> $B14
       }
       $B14 (%idx_1:u32): {  # body
-        %101:bool = gte %idx_1, 4u
-        if %101 [t: $B16] {  # if_2
+        %93:bool = gte %idx_1, 4u
+        if %93 [t: $B16] {  # if_2
           $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %102:u32 = mul %idx_1, 256u
-        %103:u32 = add %start_byte_offset_4, %102
-        %104:ptr<function, Outer, read_write> = access %a_2, %idx_1
-        %105:Outer = call %25, %103
-        store %104, %105
+        %94:u32 = mul %idx_1, 256u
+        %95:u32 = add %start_byte_offset_4, %94
+        %96:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %97:Outer = call %21, %95
+        store %96, %97
         continue  # -> $B15
       }
       $B15: {  # continuing
-        %106:u32 = add %idx_1, 1u
-        next_iteration %106  # -> $B14
+        %98:u32 = add %idx_1, 1u
+        next_iteration %98  # -> $B14
       }
     }
-    %107:array<Outer, 4> = load %a_2
-    ret %107
+    %99:array<Outer, 4> = load %a_2
+    ret %99
   }
 }
 
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index dd5351f..f967e5c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -133,102 +133,102 @@
     ret
   }
 }
-%18 = func(%start_byte_offset:u32):array<Outer, 4> {
+%32 = func(%start_byte_offset:u32):mat4x4<f32> {
   $B4: {
-    %a_1:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x4<f32>(vec4<f32>(0.0f))))))  # %a_1: 'a'
-    loop [i: $B5, b: $B6, c: $B7] {  # loop_1
-      $B5: {  # initializer
-        next_iteration 0u  # -> $B6
-      }
-      $B6 (%idx:u32): {  # body
-        %56:bool = gte %idx, 4u
-        if %56 [t: $B8] {  # if_1
-          $B8: {  # true
-            exit_loop  # loop_1
-          }
-        }
-        %57:u32 = mul %idx, 256u
-        %58:u32 = add %start_byte_offset, %57
-        %59:ptr<function, Outer, read_write> = access %a_1, %idx
-        %60:Outer = call %21, %58
-        store %59, %60
-        continue  # -> $B7
-      }
-      $B7: {  # continuing
-        %61:u32 = add %idx, 1u
-        next_iteration %61  # -> $B6
-      }
-    }
-    %62:array<Outer, 4> = load %a_1
-    ret %62
+    %54:u32 = div %start_byte_offset, 16u
+    %55:ptr<uniform, vec4<u32>, read> = access %a, %54
+    %56:vec4<u32> = load %55
+    %57:vec4<f32> = bitcast %56
+    %58:u32 = add 16u, %start_byte_offset
+    %59:u32 = div %58, 16u
+    %60:ptr<uniform, vec4<u32>, read> = access %a, %59
+    %61:vec4<u32> = load %60
+    %62:vec4<f32> = bitcast %61
+    %63:u32 = add 32u, %start_byte_offset
+    %64:u32 = div %63, 16u
+    %65:ptr<uniform, vec4<u32>, read> = access %a, %64
+    %66:vec4<u32> = load %65
+    %67:vec4<f32> = bitcast %66
+    %68:u32 = add 48u, %start_byte_offset
+    %69:u32 = div %68, 16u
+    %70:ptr<uniform, vec4<u32>, read> = access %a, %69
+    %71:vec4<u32> = load %70
+    %72:vec4<f32> = bitcast %71
+    %73:mat4x4<f32> = construct %57, %62, %67, %72
+    ret %73
   }
 }
-%21 = func(%start_byte_offset_1:u32):Outer {  # %start_byte_offset_1: 'start_byte_offset'
-  $B9: {
-    %64:array<Inner, 4> = call %24, %start_byte_offset_1
-    %65:Outer = construct %64
-    ret %65
+%28 = func(%start_byte_offset_1:u32):Inner {  # %start_byte_offset_1: 'start_byte_offset'
+  $B5: {
+    %75:mat4x4<f32> = call %32, %start_byte_offset_1
+    %76:Inner = construct %75
+    ret %76
   }
 }
 %24 = func(%start_byte_offset_2:u32):array<Inner, 4> {  # %start_byte_offset_2: 'start_byte_offset'
-  $B10: {
-    %a_2:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f32>(vec4<f32>(0.0f))))  # %a_2: 'a'
-    loop [i: $B11, b: $B12, c: $B13] {  # loop_2
-      $B11: {  # initializer
-        next_iteration 0u  # -> $B12
+  $B6: {
+    %a_1:ptr<function, array<Inner, 4>, read_write> = var, array<Inner, 4>(Inner(mat4x4<f32>(vec4<f32>(0.0f))))  # %a_1: 'a'
+    loop [i: $B7, b: $B8, c: $B9] {  # loop_1
+      $B7: {  # initializer
+        next_iteration 0u  # -> $B8
       }
-      $B12 (%idx_1:u32): {  # body
-        %69:bool = gte %idx_1, 4u
-        if %69 [t: $B14] {  # if_2
-          $B14: {  # true
+      $B8 (%idx:u32): {  # body
+        %80:bool = gte %idx, 4u
+        if %80 [t: $B10] {  # if_1
+          $B10: {  # true
+            exit_loop  # loop_1
+          }
+        }
+        %81:u32 = mul %idx, 64u
+        %82:u32 = add %start_byte_offset_2, %81
+        %83:ptr<function, Inner, read_write> = access %a_1, %idx
+        %84:Inner = call %28, %82
+        store %83, %84
+        continue  # -> $B9
+      }
+      $B9: {  # continuing
+        %85:u32 = add %idx, 1u
+        next_iteration %85  # -> $B8
+      }
+    }
+    %86:array<Inner, 4> = load %a_1
+    ret %86
+  }
+}
+%21 = func(%start_byte_offset_3:u32):Outer {  # %start_byte_offset_3: 'start_byte_offset'
+  $B11: {
+    %88:array<Inner, 4> = call %24, %start_byte_offset_3
+    %89:Outer = construct %88
+    ret %89
+  }
+}
+%18 = func(%start_byte_offset_4:u32):array<Outer, 4> {  # %start_byte_offset_4: 'start_byte_offset'
+  $B12: {
+    %a_2:ptr<function, array<Outer, 4>, read_write> = var, array<Outer, 4>(Outer(array<Inner, 4>(Inner(mat4x4<f32>(vec4<f32>(0.0f))))))  # %a_2: 'a'
+    loop [i: $B13, b: $B14, c: $B15] {  # loop_2
+      $B13: {  # initializer
+        next_iteration 0u  # -> $B14
+      }
+      $B14 (%idx_1:u32): {  # body
+        %93:bool = gte %idx_1, 4u
+        if %93 [t: $B16] {  # if_2
+          $B16: {  # true
             exit_loop  # loop_2
           }
         }
-        %70:u32 = mul %idx_1, 64u
-        %71:u32 = add %start_byte_offset_2, %70
-        %72:ptr<function, Inner, read_write> = access %a_2, %idx_1
-        %73:Inner = call %28, %71
-        store %72, %73
-        continue  # -> $B13
+        %94:u32 = mul %idx_1, 256u
+        %95:u32 = add %start_byte_offset_4, %94
+        %96:ptr<function, Outer, read_write> = access %a_2, %idx_1
+        %97:Outer = call %21, %95
+        store %96, %97
+        continue  # -> $B15
       }
-      $B13: {  # continuing
-        %74:u32 = add %idx_1, 1u
-        next_iteration %74  # -> $B12
+      $B15: {  # continuing
+        %98:u32 = add %idx_1, 1u
+        next_iteration %98  # -> $B14
       }
     }
-    %75:array<Inner, 4> = load %a_2
-    ret %75
-  }
-}
-%28 = func(%start_byte_offset_3:u32):Inner {  # %start_byte_offset_3: 'start_byte_offset'
-  $B15: {
-    %77:mat4x4<f32> = call %32, %start_byte_offset_3
-    %78:Inner = construct %77
-    ret %78
-  }
-}
-%32 = func(%start_byte_offset_4:u32):mat4x4<f32> {  # %start_byte_offset_4: 'start_byte_offset'
-  $B16: {
-    %80:u32 = div %start_byte_offset_4, 16u
-    %81:ptr<uniform, vec4<u32>, read> = access %a, %80
-    %82:vec4<u32> = load %81
-    %83:vec4<f32> = bitcast %82
-    %84:u32 = add 16u, %start_byte_offset_4
-    %85:u32 = div %84, 16u
-    %86:ptr<uniform, vec4<u32>, read> = access %a, %85
-    %87:vec4<u32> = load %86
-    %88:vec4<f32> = bitcast %87
-    %89:u32 = add 32u, %start_byte_offset_4
-    %90:u32 = div %89, 16u
-    %91:ptr<uniform, vec4<u32>, read> = access %a, %90
-    %92:vec4<u32> = load %91
-    %93:vec4<f32> = bitcast %92
-    %94:u32 = add 48u, %start_byte_offset_4
-    %95:u32 = div %94, 16u
-    %96:ptr<uniform, vec4<u32>, read> = access %a, %95
-    %97:vec4<u32> = load %96
-    %98:vec4<f32> = bitcast %97
-    %99:mat4x4<f32> = construct %83, %88, %93, %98
+    %99:array<Outer, 4> = load %a_2
     ret %99
   }
 }
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 8557a57..85c95bd 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -20,10 +20,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 2, 2> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 2, 2> l_m = m_load(0u);
   const uint scalar_offset_2 = ((4u * uint(p_m_i_save))) / 4;
   uint ubo_load_2 = m[scalar_offset_2 / 4][scalar_offset_2 % 4];
-  const vector<float16_t, 2> l_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
+  vector<float16_t, 2> l_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214163A8500(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 5317829..ca43048 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D6E8923180(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BB65764F00(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index bcbbc9a..045bfdf 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -20,8 +20,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 2> l_m = m_load(0u);
+  matrix<float16_t, 2, 2> l_m = m_load(0u);
   uint ubo_load_2 = m[0].y;
-  const vector<float16_t, 2> l_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
+  vector<float16_t, 2> l_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014EC33F5AB0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 0246e9a..890d88b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A1E22F0350(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000278647FCF70(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index d83d93b..59eeab6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -14,10 +14,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 2> t = transpose(u_load(0u));
+  matrix<float16_t, 2, 2> t = transpose(u_load(0u));
   uint ubo_load_2 = u[0].y;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))));
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))));
   uint ubo_load_3 = u[0].x;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB2035B9F0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index faf8df1..512d355 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -27,5 +27,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F88C022420(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016A361C3A10(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl
index e356785..acf76da 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -33,3 +33,8 @@
   c(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000227FD474BF0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000227FD474BF0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000227FD474BF0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 5945b09..8dc341a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -38,7 +38,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A0FDEFE2E0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001A0FDEFE2E0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001A0FDEFE2E0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EBDBFA46C0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EBDBFA46C0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EBDBFA46C0(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl
index 79bf8cf..beefa88 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -23,3 +23,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].y) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024DE1EC0190(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 8c5a88b..6830ba8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E87847F700(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DAB5C6D580(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl
index 8221fe8..3e4ef10 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -28,3 +28,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].y) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022C1D76D280(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022C1D76D280(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index b1d533b..5d45bac 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002089EA9ECA0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018D587FB0D0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index a5ed0bb..35f945c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 2, 2> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
-groupshared matrix<float16_t, 2, 2> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -18,10 +26,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint ubo_load_2 = u[0].x;
   w[1] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16)));
@@ -35,3 +40,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002382D1A4BA0(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 2498a96..5454830 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -41,5 +41,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000215D96BEE70(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029E9FD9C390(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 171535e..55caf3a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,13 +26,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 2, 3> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 2, 3> l_m = m_load(0u);
   const uint scalar_offset_2 = ((8u * uint(p_m_i_save))) / 4;
   uint4 ubo_load_5 = m[scalar_offset_2 / 4];
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const vector<float16_t, 3> l_m_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  vector<float16_t, 3> l_m_i = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022D6A286360(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 11e68a9..a310890 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -35,5 +35,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D6342AE510(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023B3AC297D0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 3c8a83a..1a96c3c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,10 +26,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 3> l_m = m_load(0u);
+  matrix<float16_t, 2, 3> l_m = m_load(0u);
   uint2 ubo_load_4 = m[0].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const vector<float16_t, 3> l_m_1 = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
+  vector<float16_t, 3> l_m_1 = vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000219E6863A30(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 3741a6d..43d3311 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000213724AFD20(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024E83B84E30(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index 9b6d9d0..251ce21 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -20,14 +20,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 2> t = transpose(u_load(0u));
+  matrix<float16_t, 3, 2> t = transpose(u_load(0u));
   uint2 ubo_load_4 = u[0].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]));
+  float16_t l = length(vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]));
   uint2 ubo_load_5 = u[0].xy;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   float16_t ubo_load_5_y = f16tof32(ubo_load_5[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_5_xz[0], ubo_load_5_y, ubo_load_5_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000228EE439110(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 2e72423..95aad78 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024648A538B0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000156951A4E70(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
index e12acb2..ca07c79 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -45,3 +45,8 @@
   c(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E756E87340(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E756E87340(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E756E87340(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index d389997..9fa2eee 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -40,7 +40,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D4178AF620(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001D4178AF620(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001D4178AF620(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E2A03E4900(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E2A03E4900(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E2A03E4900(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
index cab193f..7afdd77 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -33,3 +33,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020E583A6350(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 66fc544..6d42e3c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000233CDF12490(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025A2664AFF0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 64110fe..8a62a37 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -38,3 +38,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000251ABC43E10(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000251ABC43E10(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 4428534..e22960f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D050FB0090(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000233221B6FA0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 7f52127..920828a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 2, 3> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
-groupshared matrix<float16_t, 2, 3> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -24,10 +32,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint2 ubo_load_4 = u[0].xy;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
@@ -45,3 +50,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024165E9E0B0(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 5ae5c2f..cb70ec4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BDB4D8EC90(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AECB6FA420(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index d1e7665..cde81b7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,13 +26,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 2, 4> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 2, 4> l_m = m_load(0u);
   const uint scalar_offset_2 = ((8u * uint(p_m_i_save))) / 4;
   uint4 ubo_load_5 = m[scalar_offset_2 / 4];
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const vector<float16_t, 4> l_m_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  vector<float16_t, 4> l_m_i = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000138FD5F6860(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 274d5ce..9d1cde7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -35,5 +35,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C77BCCE900(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025BE80297D0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 4b6aea8..473a974 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -26,10 +26,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 4> l_m = m_load(0u);
+  matrix<float16_t, 2, 4> l_m = m_load(0u);
   uint2 ubo_load_4 = m[0].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const vector<float16_t, 4> l_m_1 = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
+  vector<float16_t, 4> l_m_1 = vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022BEDD33A10(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 58d1974..2d1cf8e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000292DE350990(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002162DADD3B0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index 34b793c..d1c04ce 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -20,14 +20,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 2> t = transpose(u_load(0u));
+  matrix<float16_t, 4, 2> t = transpose(u_load(0u));
   uint2 ubo_load_4 = u[0].zw;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   vector<float16_t, 2> ubo_load_4_yw = vector<float16_t, 2>(f16tof32(ubo_load_4 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]));
+  float16_t l = length(vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]));
   uint2 ubo_load_5 = u[0].xy;
   vector<float16_t, 2> ubo_load_5_xz = vector<float16_t, 2>(f16tof32(ubo_load_5 & 0xFFFF));
   vector<float16_t, 2> ubo_load_5_yw = vector<float16_t, 2>(f16tof32(ubo_load_5 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_5_xz[0], ubo_load_5_yw[0], ubo_load_5_xz[1], ubo_load_5_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000170B09F40E0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index a098544..af9481f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001316EDEFEF0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022008C663E0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
index 52b341f..f4ad807 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -45,3 +45,8 @@
   c(vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022351ED3E00(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022351ED3E00(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022351ED3E00(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 22ba5889..395cbf5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -40,7 +40,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000194FDE0E6E0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000194FDE0E6E0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000194FDE0E6E0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017FC67B4900(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017FC67B4900(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017FC67B4900(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
index bde3c45..11c8c21 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -33,3 +33,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ED849CA8C0(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index a7c8182..f289646 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000292C6A22560(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021D129FD540(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
index e6f1315..f928cc2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -38,3 +38,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AA636143E0(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AA636143E0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 5fd545d..4892c9a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012CE34EFEE0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A57A588BF0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 30368e6..32b739c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 2, 4> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
-groupshared matrix<float16_t, 2, 4> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -24,10 +32,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint2 ubo_load_4 = u[0].xy;
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
@@ -45,3 +50,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D421A49030(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 7f38f5b..aa1dff1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000174BC2DE2E0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000173B7474E20(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index f65a6e4..01ce96f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -22,10 +22,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 3, 2> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 3, 2> l_m = m_load(0u);
   const uint scalar_offset_3 = ((4u * uint(p_m_i_save))) / 4;
   uint ubo_load_3 = m[scalar_offset_3 / 4][scalar_offset_3 % 4];
-  const vector<float16_t, 2> l_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
+  vector<float16_t, 2> l_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023DA390BC60(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 2ccbd8e..9e7bc17 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247ADD4E4F0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D74E7286B0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 9128883..984a9ea 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -22,8 +22,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 2> l_m = m_load(0u);
+  matrix<float16_t, 3, 2> l_m = m_load(0u);
   uint ubo_load_3 = m[0].y;
-  const vector<float16_t, 2> l_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
+  vector<float16_t, 2> l_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FC5200BC20(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 61873a7..32d33a6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D39B74F4F0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FE7D0C4FC0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index b211d39..b2a3810 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -16,10 +16,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 3> t = transpose(u_load(0u));
+  matrix<float16_t, 2, 3> t = transpose(u_load(0u));
   uint ubo_load_3 = u[0].y;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))));
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))));
   uint ubo_load_4 = u[0].x;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000174EACFC040(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index bb23ef6..10401ac 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002645934F4D0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023E23CCB740(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl
index c9dd8fe..b237cba 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -35,3 +35,8 @@
   c(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026A355E6330(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026A355E6330(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026A355E6330(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 54db5b9..17f7b58 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -40,7 +40,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002236FB5FC50(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002236FB5FC50(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002236FB5FC50(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000016B969C8FC0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016B969C8FC0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016B969C8FC0(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl
index f4d1323..87975fb 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -25,3 +25,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].y) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020270BF4440(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 500e635..d294e64 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D306E6F5E0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C9AE40D4A0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl
index b5715c6..75a837e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -31,3 +31,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].y) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E0D3985510(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E0D3985510(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 7459726..38a6b6b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -37,5 +37,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016CCDE63580(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002153B759700(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 9885774..6c4e7c1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 3, 2> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
-groupshared matrix<float16_t, 3, 2> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -20,10 +28,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint ubo_load_3 = u[0].x;
   w[1] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16)));
@@ -37,3 +42,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002DAF8AE3B50(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 0c6e8fd..cb07491 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024E8544FCE0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C7D8804F00(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 2f9090a..3e1dd24 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -31,13 +31,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 3, 3> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 3, 3> l_m = m_load(0u);
   const uint scalar_offset_3 = ((8u * uint(p_m_i_save))) / 4;
   uint4 ubo_load_7 = m[scalar_offset_3 / 4];
   uint2 ubo_load_6 = ((scalar_offset_3 & 2) ? ubo_load_7.zw : ubo_load_7.xy);
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const vector<float16_t, 3> l_m_i = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
+  vector<float16_t, 3> l_m_i = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020D3C374760(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index d7f120d..0c307e2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000286281EF5C0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018500788250(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 9c8bd6d..7c9d7e4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -31,10 +31,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 3> l_m = m_load(0u);
+  matrix<float16_t, 3, 3> l_m = m_load(0u);
   uint2 ubo_load_6 = m[0].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const vector<float16_t, 3> l_m_1 = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
+  vector<float16_t, 3> l_m_1 = vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000263EB286370(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index c098933..ebd00c3 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -35,5 +35,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E96E81E320(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000218CAEE4550(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index 5d4e5ef..269d5d4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -25,14 +25,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 3> t = transpose(u_load(0u));
+  matrix<float16_t, 3, 3> t = transpose(u_load(0u));
   uint2 ubo_load_6 = u[0].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]));
+  float16_t l = length(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]));
   uint2 ubo_load_7 = u[0].xy;
   vector<float16_t, 2> ubo_load_7_xz = vector<float16_t, 2>(f16tof32(ubo_load_7 & 0xFFFF));
   float16_t ubo_load_7_y = f16tof32(ubo_load_7[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_7_xz[0], ubo_load_7_y, ubo_load_7_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_7_xz[0], ubo_load_7_y, ubo_load_7_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002103115CFE0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index b505ab4..18c6113 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002794771EEF0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017366474E20(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl
index dc31bd8..93acb65 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -50,3 +50,8 @@
   c(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001949B194D00(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001949B194D00(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001949B194D00(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index dedca71..17f1ccb 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -41,7 +41,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002386C79F290(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002386C79F290(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002386C79F290(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000015FA1C5BAC0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015FA1C5BAC0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015FA1C5BAC0(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl
index 4d99b40..084b1c0 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -38,3 +38,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A525FFB830(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index e79aa5c..1d3da3b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001218DEFF710(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000248E94E5C00(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 2705e2a..7dd6db3 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -44,3 +44,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D3C3D5B6F0(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002D3C3D5B6F0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 0c67d90..fab7a5f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -38,5 +38,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EEF95FE310(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E114586680(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 7412f30..8d1e1f4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 3, 3> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
-groupshared matrix<float16_t, 3, 3> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -29,10 +37,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint2 ubo_load_6 = u[0].xy;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
@@ -50,3 +55,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B31D3C3B50(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index bf42dcb..56c53ec 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001939E5FFF90(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023A086E9460(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index a681d74..8ccc1cc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -31,13 +31,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 3, 4> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 3, 4> l_m = m_load(0u);
   const uint scalar_offset_3 = ((8u * uint(p_m_i_save))) / 4;
   uint4 ubo_load_7 = m[scalar_offset_3 / 4];
   uint2 ubo_load_6 = ((scalar_offset_3 & 2) ? ubo_load_7.zw : ubo_load_7.xy);
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   vector<float16_t, 2> ubo_load_6_yw = vector<float16_t, 2>(f16tof32(ubo_load_6 >> 16));
-  const vector<float16_t, 4> l_m_i = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
+  vector<float16_t, 4> l_m_i = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017BE0F14A80(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 15ef107..f390ede 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B90C8BE4F0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000123001F4670(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 0513c72..2b3e70f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -31,10 +31,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 4> l_m = m_load(0u);
+  matrix<float16_t, 3, 4> l_m = m_load(0u);
   uint2 ubo_load_6 = m[0].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   vector<float16_t, 2> ubo_load_6_yw = vector<float16_t, 2>(f16tof32(ubo_load_6 >> 16));
-  const vector<float16_t, 4> l_m_1 = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
+  vector<float16_t, 4> l_m_1 = vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000252A0916370(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 59fea5e..55c706f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -35,5 +35,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000267F605F700(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E90BBA4570(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index 503b587..279d4ce 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -25,14 +25,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 3> t = transpose(u_load(0u));
+  matrix<float16_t, 4, 3> t = transpose(u_load(0u));
   uint2 ubo_load_6 = u[0].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   vector<float16_t, 2> ubo_load_6_yw = vector<float16_t, 2>(f16tof32(ubo_load_6 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]));
+  float16_t l = length(vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]));
   uint2 ubo_load_7 = u[0].xy;
   vector<float16_t, 2> ubo_load_7_xz = vector<float16_t, 2>(f16tof32(ubo_load_7 & 0xFFFF));
   vector<float16_t, 2> ubo_load_7_yw = vector<float16_t, 2>(f16tof32(ubo_load_7 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_7_xz[0], ubo_load_7_yw[0], ubo_load_7_xz[1], ubo_load_7_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_7_xz[0], ubo_load_7_yw[0], ubo_load_7_xz[1], ubo_load_7_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B0E087C800(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 2249ec3..a461068 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023A537294D0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EEC4D55D60(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl
index 7a546d6..aa9e6c2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -50,3 +50,8 @@
   c(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EE850450B0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE850450B0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE850450B0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index fc1deef..d5f2a8c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -41,7 +41,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020E5416E4F0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000020E5416E4F0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000020E5416E4F0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000205B0618F80(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000205B0618F80(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000205B0618F80(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl
index 4fe9258..a49c1c3 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -38,3 +38,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000296C8466350(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 21d27d8..1e1049c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020FA1A30E10(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002517FA95BD0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl
index 878e7ab..2f7e45b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -44,3 +44,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024153ADAFE0(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024153ADAFE0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index b5370c2..9e44430 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -38,5 +38,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000210413A0090(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A683419580(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 4ee7213..55e9b39 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 3, 4> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
-groupshared matrix<float16_t, 3, 4> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -29,10 +37,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint2 ubo_load_6 = u[0].xy;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
@@ -50,3 +55,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028A7C80F200(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 0799f8c..efff9f4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DADEF40E70(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028EB1A44CE0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 3115dd3..7e29867 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -24,10 +24,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 4, 2> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 4, 2> l_m = m_load(0u);
   const uint scalar_offset_4 = ((4u * uint(p_m_i_save))) / 4;
   uint ubo_load_4 = m[scalar_offset_4 / 4][scalar_offset_4 % 4];
-  const vector<float16_t, 2> l_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  vector<float16_t, 2> l_m_i = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000225E76B3A60(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 3567cdb..78cfe5a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -38,5 +38,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002491C9AE4F0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000191E7404040(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 2b386df..992e444 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -24,8 +24,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 2> l_m = m_load(0u);
+  matrix<float16_t, 4, 2> l_m = m_load(0u);
   uint ubo_load_4 = m[0].y;
-  const vector<float16_t, 2> l_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
+  vector<float16_t, 2> l_m_1 = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BA719D0250(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index be905c2..a09217b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028CFCF8E6E0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001890791CD90(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
index 610b74c..bf18901 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -18,10 +18,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 4> t = transpose(u_load(0u));
+  matrix<float16_t, 2, 4> t = transpose(u_load(0u));
   uint ubo_load_4 = u[0].y;
-  const float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))));
+  float16_t l = length(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16))));
   uint ubo_load_5 = u[0].x;
-  const float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
+  float16_t a = abs(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_5 & 0xFFFF)), float16_t(f16tof32(ubo_load_5 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E2065593B0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index b4ffe06..5795b14 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000269DAE9F150(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AAB69F3F80(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
index 74e7fec..2f8f584 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -37,3 +37,8 @@
   c(vector<float16_t, 2>(float16_t(f16tof32(ubo_load_6 & 0xFFFF)), float16_t(f16tof32(ubo_load_6 >> 16))).yx.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D5FD806330(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D5FD806330(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D5FD806330(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 82f185d..4d64d9e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -42,7 +42,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DEFAF0F6F0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001DEFAF0F6F0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001DEFAF0F6F0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000259FBC5D280(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000259FBC5D280(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000259FBC5D280(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
index 49df044..acf5dbf 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.fxc.hlsl
@@ -27,3 +27,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].y) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015259A44C20(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 08a0898..7cd7665 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022972AAE920(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C538B6D5D0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
index 872ba3f..a08fd05 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -34,3 +34,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].y) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C904F6A6A0(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C904F6A6A0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index 018da2f..c256563 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -40,5 +40,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D32C608C0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000181DCF854E0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
index c1a9b01..7a5b214 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 4, 2> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
-groupshared matrix<float16_t, 4, 2> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -22,10 +30,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint ubo_load_4 = u[0].x;
   w[1] = vector<float16_t, 2>(float16_t(f16tof32(ubo_load_4 & 0xFFFF)), float16_t(f16tof32(ubo_load_4 >> 16)));
@@ -39,3 +44,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018CC5176350(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 61e7784..c4b555e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000010497AFFC20(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D1A2E0BC30(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 183de95..ae6791b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -36,13 +36,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 4, 3> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 4, 3> l_m = m_load(0u);
   const uint scalar_offset_4 = ((8u * uint(p_m_i_save))) / 4;
   uint4 ubo_load_9 = m[scalar_offset_4 / 4];
   uint2 ubo_load_8 = ((scalar_offset_4 & 2) ? ubo_load_9.zw : ubo_load_9.xy);
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 3> l_m_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  vector<float16_t, 3> l_m_i = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023CFDD913E0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index 9be7f11..193a940 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -37,5 +37,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BBBF5BF9C0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002192AD697D0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index a36d04e..2c90356 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -36,10 +36,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 3> l_m = m_load(0u);
+  matrix<float16_t, 4, 3> l_m = m_load(0u);
   uint2 ubo_load_8 = m[0].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 3> l_m_1 = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
+  vector<float16_t, 3> l_m_1 = vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EC52A4A960(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index dcc8787..a2f85e0 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DEC386FD20(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000245722C4420(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
index 7f5e0c2..757cd64 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -30,14 +30,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 4> t = transpose(u_load(0u));
+  matrix<float16_t, 3, 4> t = transpose(u_load(0u));
   uint2 ubo_load_8 = u[0].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const float16_t l = length(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]));
+  float16_t l = length(vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]));
   uint2 ubo_load_9 = u[0].xy;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   float16_t ubo_load_9_y = f16tof32(ubo_load_9[0] >> 16);
-  const float16_t a = abs(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
+  float16_t a = abs(vector<float16_t, 3>(ubo_load_9_xz[0], ubo_load_9_y, ubo_load_9_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001562018C020(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index e8dea0e..fb903a6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D06DB30BA0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023C48104E50(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
index d7dbe58..fc1b134 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -55,3 +55,8 @@
   c(vector<float16_t, 3>(ubo_load_10_xz[0], ubo_load_10_y, ubo_load_10_xz[1]).zxy.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024E9E3E65A0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024E9E3E65A0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024E9E3E65A0(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index 7dc67b2..c36b631 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -42,7 +42,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B158120950(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001B158120950(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001B158120950(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002E8C5E44D00(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E8C5E44D00(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E8C5E44D00(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
index fd23fd5..b177beb 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.fxc.hlsl
@@ -43,3 +43,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000234C08B6350(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
index 312a412..b1cb17d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002360DCDF7F0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015867784D70(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
index 01c36be..5469303 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -50,3 +50,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000292BF6490F0(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000292BF6490F0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index f006541..ad9ee22 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -40,5 +40,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017EC85A3710(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B34E2A9200(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
index 46f8c4f..794a40e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 4, 3> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
-groupshared matrix<float16_t, 4, 3> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -34,10 +42,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint2 ubo_load_8 = u[0].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
@@ -55,3 +60,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DF2F6DAFE0(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index df5dd2f..ad603ef 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C36CE2FC40(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CF999B41B0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
index 7191d8d..984c012 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -36,13 +36,16 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int p_m_i_save = i();
-  const matrix<float16_t, 4, 4> l_m = m_load(0u);
+  int p_m_i_save = i();
+  matrix<float16_t, 4, 4> l_m = m_load(0u);
   const uint scalar_offset_4 = ((8u * uint(p_m_i_save))) / 4;
   uint4 ubo_load_9 = m[scalar_offset_4 / 4];
   uint2 ubo_load_8 = ((scalar_offset_4 & 2) ? ubo_load_9.zw : ubo_load_9.xy);
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const vector<float16_t, 4> l_m_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  vector<float16_t, 4> l_m_i = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000292A18FA050(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index fed7605..1d8710e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -37,5 +37,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017025BF2A00(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AB1F76A2A0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
index 72c8418..8180310 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.fxc.hlsl
@@ -36,10 +36,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 4> l_m = m_load(0u);
+  matrix<float16_t, 4, 4> l_m = m_load(0u);
   uint2 ubo_load_8 = m[0].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const vector<float16_t, 4> l_m_1 = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
+  vector<float16_t, 4> l_m_1 = vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000279A58CC000(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
index b555c1b..b86e7ca 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002AF6D4704B0(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000279F0E34570(11,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
index 4ea740a..58ec2be 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.fxc.hlsl
@@ -30,14 +30,17 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 4> t = transpose(u_load(0u));
+  matrix<float16_t, 4, 4> t = transpose(u_load(0u));
   uint2 ubo_load_8 = u[0].zw;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   vector<float16_t, 2> ubo_load_8_yw = vector<float16_t, 2>(f16tof32(ubo_load_8 >> 16));
-  const float16_t l = length(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]));
+  float16_t l = length(vector<float16_t, 4>(ubo_load_8_xz[0], ubo_load_8_yw[0], ubo_load_8_xz[1], ubo_load_8_yw[1]));
   uint2 ubo_load_9 = u[0].xy;
   vector<float16_t, 2> ubo_load_9_xz = vector<float16_t, 2>(f16tof32(ubo_load_9 & 0xFFFF));
   vector<float16_t, 2> ubo_load_9_yw = vector<float16_t, 2>(f16tof32(ubo_load_9 >> 16));
-  const float16_t a = abs(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
+  float16_t a = abs(vector<float16_t, 4>(ubo_load_9_xz[0], ubo_load_9_yw[0], ubo_load_9_xz[1], ubo_load_9_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B83CA5F0D0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
index 0056b5d..710b431 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_builtin.wgsl.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ED194132E0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E40D58C310(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
index b7cceee..80e21f9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.fxc.hlsl
@@ -55,3 +55,8 @@
   c(vector<float16_t, 4>(ubo_load_10_xz[0], ubo_load_10_yw[0], ubo_load_10_xz[1], ubo_load_10_yw[1]).ywxz.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FD94798000(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FD94798000(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FD94798000(11,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
index f64514f..4890633 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.fxc.hlsl
@@ -42,7 +42,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000231965FE260(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000231965FE260(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000231965FE260(11,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000025281D04BD0(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025281D04BD0(8,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025281D04BD0(11,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
index 5efc26e..5a497a4 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.fxc.hlsl
@@ -43,3 +43,6 @@
   p[0][1] = float16_t(f16tof32(((u[0].z) & 0xFFFF)));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AF59CE3B30(4,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
index e1ca233..eb0bf9e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022585B9E950(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000242D4DF5D20(5,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
index 4bcea67..3ee1078 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.fxc.hlsl
@@ -50,3 +50,7 @@
   s.Store<float16_t>(2u, float16_t(f16tof32(((u[0].z) & 0xFFFF))));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021E1AF3AAD0(6,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021E1AF3AAD0(7,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
index ac6afbb..1f9be8a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.fxc.hlsl
@@ -40,5 +40,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002EA73CDFCE0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B906C27F80(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
index f60ee62..4da56b6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.fxc.hlsl
@@ -1,9 +1,17 @@
 SKIP: FAILED
 
+groupshared matrix<float16_t, 4, 4> w;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    w = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
-groupshared matrix<float16_t, 4, 4> w;
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -34,10 +42,7 @@
 }
 
 void f_inner(uint local_invocation_index) {
-  {
-    w = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   w = u_load(0u);
   uint2 ubo_load_8 = u[0].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
@@ -55,3 +60,6 @@
   f_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AAB39BAFB0(1,20-28): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
index 49d2a45..c3047b8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_workgroup.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018C8EF1FEE0(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EDBFCE5160(9,20-28): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/types/f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/f16.wgsl.expected.fxc.hlsl
index 272c812..d686683 100644
--- a/test/tint/buffer/uniform/types/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/f16.wgsl.expected.fxc.hlsl
@@ -3,9 +3,15 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 [numthreads(1, 1, 1)]
 void main() {
-  const float16_t x = float16_t(f16tof32(((u[0].x) & 0xFFFF)));
+  float16_t x = float16_t(f16tof32(((u[0].x) & 0xFFFF)));
+  s.Store<float16_t>(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000234758C3730(8,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000234758C3730(8,13): error X3000: unrecognized identifier 'x'
+
diff --git a/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.fxc.hlsl
index 094aa44..06d5e4a 100644
--- a/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.fxc.hlsl
@@ -12,6 +12,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224AE6B1950(8,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000224AE6B1950(8,13): error X3000: unrecognized identifier 'x'
+C:\src\dawn\Shader@0x000002099DE827C0(8,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002099DE827C0(8,13): error X3000: unrecognized identifier 'x'
 
diff --git a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.fxc.hlsl
index b0b1b2f..a56697d 100644
--- a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 2> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -12,8 +13,17 @@
   return matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(f16tof32(ubo_load & 0xFFFF)), float16_t(f16tof32(ubo_load >> 16))), vector<float16_t, 2>(float16_t(f16tof32(ubo_load_1 & 0xFFFF)), float16_t(f16tof32(ubo_load_1 >> 16))));
 }
 
+void s_store(uint offset, matrix<float16_t, 2, 2> value) {
+  s.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 2, 2> x = u_load(0u);
+  matrix<float16_t, 2, 2> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001624506CC00(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl
index be56f2e..89b2085 100644
--- a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.fxc.hlsl
@@ -32,6 +32,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016C69A6EDB0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000016C69A6EDB0(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001B895617160(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B895617160(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.fxc.hlsl
index 8804456..6b6019e 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 3> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -18,8 +19,17 @@
   return matrix<float16_t, 2, 3>(vector<float16_t, 3>(ubo_load_xz[0], ubo_load_y, ubo_load_xz[1]), vector<float16_t, 3>(ubo_load_2_xz[0], ubo_load_2_y, ubo_load_2_xz[1]));
 }
 
+void s_store(uint offset, matrix<float16_t, 2, 3> value) {
+  s.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 2, 3> x = u_load(0u);
+  matrix<float16_t, 2, 3> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C5D9CB9B90(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl
index b2f643d..9b6c40c 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.fxc.hlsl
@@ -34,6 +34,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026FB9BAEEF0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026FB9BAEEF0(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001B68D5F4CD0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B68D5F4CD0(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.fxc.hlsl
index 5b4192c..c3c3cbd 100644
--- a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 4> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -18,8 +19,17 @@
   return matrix<float16_t, 2, 4>(vector<float16_t, 4>(ubo_load_xz[0], ubo_load_yw[0], ubo_load_xz[1], ubo_load_yw[1]), vector<float16_t, 4>(ubo_load_2_xz[0], ubo_load_2_yw[0], ubo_load_2_xz[1], ubo_load_2_yw[1]));
 }
 
+void s_store(uint offset, matrix<float16_t, 2, 4> value) {
+  s.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 2, 4> x = u_load(0u);
+  matrix<float16_t, 2, 4> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020DF848E630(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl
index 30e7b9b..25088c6 100644
--- a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.fxc.hlsl
@@ -34,6 +34,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022317D645F0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000022317D645F0(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000029CF0B54FB0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029CF0B54FB0(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.fxc.hlsl
index 8ad8c78..b50196a 100644
--- a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 3, 2> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -14,8 +15,18 @@
   return matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(f16tof32(ubo_load & 0xFFFF)), float16_t(f16tof32(ubo_load >> 16))), vector<float16_t, 2>(float16_t(f16tof32(ubo_load_1 & 0xFFFF)), float16_t(f16tof32(ubo_load_1 >> 16))), vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))));
 }
 
+void s_store(uint offset, matrix<float16_t, 3, 2> value) {
+  s.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  s.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 3, 2> x = u_load(0u);
+  matrix<float16_t, 3, 2> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018D5FADDC90(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl
index f2cc4fc..cdb8d24 100644
--- a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.fxc.hlsl
@@ -35,6 +35,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000292D076E300(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000292D076E300(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001F861A09100(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F861A09100(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.fxc.hlsl
index 1233839..b2562cd 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 3, 3> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -23,8 +24,18 @@
   return matrix<float16_t, 3, 3>(vector<float16_t, 3>(ubo_load_xz[0], ubo_load_y, ubo_load_xz[1]), vector<float16_t, 3>(ubo_load_2_xz[0], ubo_load_2_y, ubo_load_2_xz[1]), vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]));
 }
 
+void s_store(uint offset, matrix<float16_t, 3, 3> value) {
+  s.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  s.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 3, 3> x = u_load(0u);
+  matrix<float16_t, 3, 3> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B74A005100(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl
index 261020a..17caa37 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.fxc.hlsl
@@ -36,6 +36,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F206BDEB10(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001F206BDEB10(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000021AF02C3EC0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021AF02C3EC0(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.fxc.hlsl
index c86463c..d0ea2cc 100644
--- a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 3, 4> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -23,8 +24,18 @@
   return matrix<float16_t, 3, 4>(vector<float16_t, 4>(ubo_load_xz[0], ubo_load_yw[0], ubo_load_xz[1], ubo_load_yw[1]), vector<float16_t, 4>(ubo_load_2_xz[0], ubo_load_2_yw[0], ubo_load_2_xz[1], ubo_load_2_yw[1]), vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]));
 }
 
+void s_store(uint offset, matrix<float16_t, 3, 4> value) {
+  s.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  s.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 3, 4> x = u_load(0u);
+  matrix<float16_t, 3, 4> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000230A7C9E050(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl
index a57c1b4..fc5bd9b 100644
--- a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.fxc.hlsl
@@ -36,6 +36,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002DBBC30FC10(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002DBBC30FC10(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001579E383ED0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001579E383ED0(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.fxc.hlsl
index 5f9b34d..3a47e81 100644
--- a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 2> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -16,8 +17,19 @@
   return matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(f16tof32(ubo_load & 0xFFFF)), float16_t(f16tof32(ubo_load >> 16))), vector<float16_t, 2>(float16_t(f16tof32(ubo_load_1 & 0xFFFF)), float16_t(f16tof32(ubo_load_1 >> 16))), vector<float16_t, 2>(float16_t(f16tof32(ubo_load_2 & 0xFFFF)), float16_t(f16tof32(ubo_load_2 >> 16))), vector<float16_t, 2>(float16_t(f16tof32(ubo_load_3 & 0xFFFF)), float16_t(f16tof32(ubo_load_3 >> 16))));
 }
 
+void s_store(uint offset, matrix<float16_t, 4, 2> value) {
+  s.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  s.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  s.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 4, 2> x = u_load(0u);
+  matrix<float16_t, 4, 2> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002053EEB4D00(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl
index 2bb0358..4ca2fae 100644
--- a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.fxc.hlsl
@@ -38,6 +38,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B1B6BAE740(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001B1B6BAE740(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x00000180429F3ED0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000180429F3ED0(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.fxc.hlsl
index d877f24..01a1bb4 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 3> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -28,8 +29,19 @@
   return matrix<float16_t, 4, 3>(vector<float16_t, 3>(ubo_load_xz[0], ubo_load_y, ubo_load_xz[1]), vector<float16_t, 3>(ubo_load_2_xz[0], ubo_load_2_y, ubo_load_2_xz[1]), vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]), vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]));
 }
 
+void s_store(uint offset, matrix<float16_t, 4, 3> value) {
+  s.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  s.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  s.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 4, 3> x = u_load(0u);
+  matrix<float16_t, 4, 3> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002467FC63CA0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl
index 904ed26..ed2cabf 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.fxc.hlsl
@@ -38,6 +38,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002932180E2D0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002932180E2D0(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001D8159E5250(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D8159E5250(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.fxc.hlsl
index 6433b4e..21169c6 100644
--- a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.fxc.hlsl
@@ -3,6 +3,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 4, 4> u_load(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -28,8 +29,19 @@
   return matrix<float16_t, 4, 4>(vector<float16_t, 4>(ubo_load_xz[0], ubo_load_yw[0], ubo_load_xz[1], ubo_load_yw[1]), vector<float16_t, 4>(ubo_load_2_xz[0], ubo_load_2_yw[0], ubo_load_2_xz[1], ubo_load_2_yw[1]), vector<float16_t, 4>(ubo_load_4_xz[0], ubo_load_4_yw[0], ubo_load_4_xz[1], ubo_load_4_yw[1]), vector<float16_t, 4>(ubo_load_6_xz[0], ubo_load_6_yw[0], ubo_load_6_xz[1], ubo_load_6_yw[1]));
 }
 
+void s_store(uint offset, matrix<float16_t, 4, 4> value) {
+  s.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  s.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  s.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const matrix<float16_t, 4, 4> x = u_load(0u);
+  matrix<float16_t, 4, 4> x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014C24BFC490(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl
index 595d922..0475da9 100644
--- a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.fxc.hlsl
@@ -38,6 +38,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D706590D40(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001D706590D40(7,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002353A214CD0(6,30-38): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002353A214CD0(7,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.fxc.hlsl
index 1e9d9fc..19753ee 100644
--- a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.fxc.hlsl
@@ -12,6 +12,7 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[2];
 };
+RWByteAddressBuffer s : register(u1);
 
 matrix<float16_t, 2, 4> u_load_4(uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
@@ -35,17 +36,36 @@
   uint2 ubo_load_4 = ((scalar_offset_2 & 2) ? ubo_load_5.zw : ubo_load_5.xy);
   vector<float16_t, 2> ubo_load_4_xz = vector<float16_t, 2>(f16tof32(ubo_load_4 & 0xFFFF));
   float16_t ubo_load_4_y = f16tof32(ubo_load_4[0] >> 16);
-  const Inner tint_symbol = {float16_t(f16tof32(((u[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))), vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]), u_load_4((offset + 16u))};
+  Inner tint_symbol = {float16_t(f16tof32(((u[scalar_offset_index / 4][scalar_offset_index % 4] >> (scalar_offset_bytes % 4 == 0 ? 0 : 16)) & 0xFFFF))), vector<float16_t, 3>(ubo_load_4_xz[0], ubo_load_4_y, ubo_load_4_xz[1]), u_load_4((offset + 16u))};
   return tint_symbol;
 }
 
 S u_load(uint offset) {
-  const S tint_symbol_1 = {u_load_1((offset + 0u))};
+  S tint_symbol_1 = {u_load_1((offset + 0u))};
   return tint_symbol_1;
 }
 
+void s_store_4(uint offset, matrix<float16_t, 2, 4> value) {
+  s.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  s.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+}
+
+void s_store_1(uint offset, Inner value) {
+  s.Store<float16_t>((offset + 0u), value.scalar_f16);
+  s.Store<vector<float16_t, 3> >((offset + 8u), value.vec3_f16);
+  s_store_4((offset + 16u), value.mat2x4_f16);
+}
+
+void s_store(uint offset, S value) {
+  s_store_1((offset + 0u), value.inner);
+}
+
 [numthreads(1, 1, 1)]
 void main() {
-  const S x = u_load(0u);
+  S x = u_load(0u);
+  s_store(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021570FAD040(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.fxc.hlsl
index 215186a..b6548ff 100644
--- a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.fxc.hlsl
@@ -70,5 +70,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020DFA572FC0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000219E31050A0(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.fxc.hlsl
index a474015..741827b 100644
--- a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.fxc.hlsl
@@ -3,10 +3,16 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 [numthreads(1, 1, 1)]
 void main() {
   uint ubo_load = u[0].x;
-  const vector<float16_t, 2> x = vector<float16_t, 2>(float16_t(f16tof32(ubo_load & 0xFFFF)), float16_t(f16tof32(ubo_load >> 16)));
+  vector<float16_t, 2> x = vector<float16_t, 2>(float16_t(f16tof32(ubo_load & 0xFFFF)), float16_t(f16tof32(ubo_load >> 16)));
+  s.Store<vector<float16_t, 2> >(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000198EA11FE90(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000198EA11FE90(10,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.fxc.hlsl
index d85180d..bd9ce7f 100644
--- a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001823586FB50(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C901FFFF00(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.fxc.hlsl
index c57f376..599b7f9 100644
--- a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.fxc.hlsl
@@ -3,12 +3,19 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 [numthreads(1, 1, 1)]
 void main() {
   uint2 ubo_load = u[0].xy;
   vector<float16_t, 2> ubo_load_xz = vector<float16_t, 2>(f16tof32(ubo_load & 0xFFFF));
   float16_t ubo_load_y = f16tof32(ubo_load[0] >> 16);
-  const vector<float16_t, 3> x = vector<float16_t, 3>(ubo_load_xz[0], ubo_load_y, ubo_load_xz[1]);
+  vector<float16_t, 3> x = vector<float16_t, 3>(ubo_load_xz[0], ubo_load_y, ubo_load_xz[1]);
+  s.Store<vector<float16_t, 3> >(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000237D1000DA0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000237D1000DA0(10,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000237D1000DA0(10,13-22): error X3000: unrecognized identifier 'ubo_load_y'
+
diff --git a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.fxc.hlsl
index 75abd14..a205e19 100644
--- a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.fxc.hlsl
@@ -24,5 +24,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020469C9F260(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024B8AFA3C30(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.fxc.hlsl b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.fxc.hlsl
index 3a69753..6be05f2f 100644
--- a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.fxc.hlsl
@@ -3,12 +3,20 @@
 cbuffer cbuffer_u : register(b0) {
   uint4 u[1];
 };
+RWByteAddressBuffer s : register(u1);
 
 [numthreads(1, 1, 1)]
 void main() {
   uint2 ubo_load = u[0].xy;
   vector<float16_t, 2> ubo_load_xz = vector<float16_t, 2>(f16tof32(ubo_load & 0xFFFF));
   vector<float16_t, 2> ubo_load_yw = vector<float16_t, 2>(f16tof32(ubo_load >> 16));
-  const vector<float16_t, 4> x = vector<float16_t, 4>(ubo_load_xz[0], ubo_load_yw[0], ubo_load_xz[1], ubo_load_yw[1]);
+  vector<float16_t, 4> x = vector<float16_t, 4>(ubo_load_xz[0], ubo_load_yw[0], ubo_load_xz[1], ubo_load_yw[1]);
+  s.Store<vector<float16_t, 4> >(0u, x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026C42A24430(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026C42A24430(10,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026C42A24430(11,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026C42A24430(12,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.fxc.hlsl
index b676868..9bc902d 100644
--- a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.fxc.hlsl
@@ -24,5 +24,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000177E85EF400(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000203A6D33BF0(6,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/bug/chromium/1434271.wgsl.expected.fxc.hlsl b/test/tint/bug/chromium/1434271.wgsl.expected.fxc.hlsl
index 8759d14..a1177d2 100644
--- a/test/tint/bug/chromium/1434271.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/chromium/1434271.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: f16 not supported
+SKIP: FAILED
 
 float tint_trunc(float param_0) {
   return param_0 < 0 ? ceil(param_0) : floor(param_0);
@@ -23,7 +23,7 @@
 }
 
 tint_symbol_4 vertex_main() {
-  const float4 inner_result = vertex_main_inner();
+  float4 inner_result = vertex_main_inner();
   tint_symbol_4 wrapper_result = (tint_symbol_4)0;
   wrapper_result.value = inner_result;
   return wrapper_result;
@@ -86,8 +86,8 @@
 }
 
 tint_symbol_7 vs_main(tint_symbol_6 tint_symbol_5) {
-  const VertexInput tint_symbol_12 = {tint_symbol_5.position, tint_symbol_5.color, tint_symbol_5.quad_pos};
-  const VertexOutput inner_result_1 = vs_main_inner(tint_symbol_12);
+  VertexInput tint_symbol_12 = {tint_symbol_5.position, tint_symbol_5.color, tint_symbol_5.quad_pos};
+  VertexOutput inner_result_1 = vs_main_inner(tint_symbol_12);
   tint_symbol_7 wrapper_result_1 = (tint_symbol_7)0;
   wrapper_result_1.position = inner_result_1.position;
   wrapper_result_1.color = inner_result_1.color;
@@ -113,7 +113,7 @@
 };
 
 Particle data_load(uint offset) {
-  const Particle tint_symbol_13 = {asfloat(data.Load3((offset + 0u))), asfloat(data.Load((offset + 12u))), asfloat(data.Load4((offset + 16u))), asfloat(data.Load2((offset + 32u)))};
+  Particle tint_symbol_13 = {asfloat(data.Load3((offset + 0u))), asfloat(data.Load((offset + 12u))), asfloat(data.Load4((offset + 16u))), asfloat(data.Load2((offset + 32u)))};
   return tint_symbol_13;
 }
 
@@ -126,7 +126,7 @@
 
 void simulate_inner(uint3 GlobalInvocationID) {
   rand_seed = ((asfloat(sim_params[1]).xy * float2(GlobalInvocationID.xy)) * asfloat(sim_params[1]).zw);
-  const uint idx = GlobalInvocationID.x;
+  uint idx = GlobalInvocationID.x;
   Particle particle = data_load((48u * idx));
   data_store((48u * idx), particle);
 }
@@ -157,15 +157,15 @@
   uint2 tint_tmp;
   tex_out.GetDimensions(tint_tmp.x, tint_tmp.y);
   if (all((coord.xy < uint2(tint_tmp)))) {
-    const uint dst_offset = (coord.x << ((coord.y * ubo[0].x) & 31u));
-    const uint src_offset = ((coord.x - 2u) + ((coord.y >> 2u) * ubo[0].x));
-    const float a = asfloat(buf_in.Load((4u * (src_offset << 0u))));
-    const float b = asfloat(buf_in.Load((4u * (src_offset + 1u))));
-    const float c = asfloat(buf_in.Load((4u * ((src_offset + 1u) + ubo[0].x))));
-    const float d = asfloat(buf_in.Load((4u * ((src_offset + 1u) + ubo[0].x))));
-    const float sum = dot(float4(a, b, c, d), (1.0f).xxxx);
+    uint dst_offset = (coord.x << ((coord.y * ubo[0].x) & 31u));
+    uint src_offset = ((coord.x - 2u) + ((coord.y >> 2u) * ubo[0].x));
+    float a = asfloat(buf_in.Load((4u * (src_offset << 0u))));
+    float b = asfloat(buf_in.Load((4u * (src_offset + 1u))));
+    float c = asfloat(buf_in.Load((4u * ((src_offset + 1u) + ubo[0].x))));
+    float d = asfloat(buf_in.Load((4u * ((src_offset + 1u) + ubo[0].x))));
+    float sum = dot(float4(a, b, c, d), (1.0f).xxxx);
     buf_out.Store((4u * dst_offset), asuint(tint_float_mod(sum, 4.0f)));
-    const float4 probabilities = (float4(a, (a * b), ((a / b) + c), sum) + max(sum, 0.0f));
+    float4 probabilities = (float4(a, (a * b), ((a / b) + c), sum) + max(sum, 0.0f));
     tex_out[int2(coord.xy)] = probabilities;
   }
 }
@@ -175,3 +175,6 @@
   export_level_inner(tint_symbol_10.coord);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9F2FFC070(5,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/bug/chromium/1434271.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/chromium/1434271.wgsl.expected.ir.fxc.hlsl
index a878b29..4805697 100644
--- a/test/tint/bug/chromium/1434271.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/chromium/1434271.wgsl.expected.ir.fxc.hlsl
@@ -174,6 +174,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018C00125070(62,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000018C00125070(62,13-17): error X3000: unrecognized identifier 'arg_0'
+C:\src\dawn\Shader@0x00000237E270B9D0(62,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000237E270B9D0(62,13-17): error X3000: unrecognized identifier 'arg_0'
 
diff --git a/test/tint/bug/chromium/344265982.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/chromium/344265982.wgsl.expected.ir.fxc.hlsl
index ae23d7e..1c77cf9 100644
--- a/test/tint/bug/chromium/344265982.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/chromium/344265982.wgsl.expected.ir.fxc.hlsl
@@ -38,5 +38,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000242DB0BFA50(17,11-19): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000001BA620D9FC0(17,11-19): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.fxc.hlsl
index f33b12b..a75ea3e 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE6629DEC0(13,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001EFFA24FCA0(13,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.fxc.hlsl
index b900c9e..0e5bc5d 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.fxc.hlsl
@@ -21,5 +21,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025D0E4FCA20(11,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000020377157BF0(11,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.fxc.hlsl
index 828683a..b07c24c 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013890E4F9A0(13,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001B624A2FC80(13,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.fxc.hlsl
index f937023..ecf67dc 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.fxc.hlsl
@@ -21,5 +21,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A16A3CCA20(12,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001D5F381EA40(12,3-26): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl
index 2489e9f..a89ff7d 100644
--- a/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.ir.fxc.hlsl
@@ -50,5 +50,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000286AC2A3830(47,3-30): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000024E6ED8CE80(47,3-30): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
index 232ac99..b464e13 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018E5FA33500(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001EDD2CB2410(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl
index e1a0fa0..38c87e0 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A1E80F9730(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001B3DF4F69B0(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.fxc.hlsl
index fde2e3a..49ac06a 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000198986B0D30(8,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001F9FE392B80(8,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.fxc.hlsl
index f7d9aa7..ae7830e 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C5F22D16E0(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001D4EAC627C0(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
index 597a21e..846cc47 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018DBD441570(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000028C2C562520(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl
index ead2bce..3f5cd58 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011A9FF4DD50(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001180F4DFAF0(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.fxc.hlsl
index e59904c..164d913 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000183B5130BD0(8,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000019C65032630(8,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.fxc.hlsl
index d479da6..89bed87 100644
--- a/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C2422C2190(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001D81C5C2850(8,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/tint/1557.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/1557.wgsl.expected.fxc.hlsl
index 8cb8e0b..5a86a2a 100644
--- a/test/tint/bug/tint/1557.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/1557.wgsl.expected.fxc.hlsl
@@ -40,3 +40,6 @@
   }
   return;
 }
+FXC validation failure:
+internal error: no storage type for block output
+
diff --git a/test/tint/bug/tint/1666.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/1666.wgsl.expected.fxc.hlsl
index b03fefe..13c3b11 100644
--- a/test/tint/bug/tint/1666.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/1666.wgsl.expected.fxc.hlsl
@@ -1,26 +1,26 @@
 SKIP: FAILED
 
 void tint_symbol() {
-  const int idx = 3;
-  const int x = int2(1, 2)[idx];
+  int idx = 3;
+  int x = int2(1, 2)[idx];
 }
 
 void tint_symbol_1() {
-  const int idx = 4;
-  const float2 x = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))[idx];
+  int idx = 4;
+  float2 x = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))[idx];
 }
 
 void fixed_size_array() {
-  const int arr[2] = {1, 2};
-  const int idx = 3;
-  const int x = arr[idx];
+  int arr[2] = {1, 2};
+  int idx = 3;
+  int x = arr[idx];
 }
 
 ByteAddressBuffer rarr : register(t0);
 
 void runtime_size_array() {
-  const int idx = -1;
-  const float x = asfloat(rarr.Load((4u * uint(idx))));
+  int idx = -1;
+  float x = asfloat(rarr.Load((4u * uint(idx))));
 }
 
 [numthreads(1, 1, 1)]
@@ -31,3 +31,6 @@
   runtime_size_array();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024567044BF0(3,11-25): error X3504: array index out of bounds
+
diff --git a/test/tint/bug/tint/1666.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/1666.wgsl.expected.ir.fxc.hlsl
index a99a61f..fb6bac3 100644
--- a/test/tint/bug/tint/1666.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/1666.wgsl.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EBA7140850(5,11-25): error X3504: array index out of bounds
+C:\src\dawn\Shader@0x000002ED72BD6CB0(5,11-25): error X3504: array index out of bounds
 
diff --git a/test/tint/bug/tint/2010.spvasm.expected.dxc.hlsl b/test/tint/bug/tint/2010.spvasm.expected.dxc.hlsl
index 752fd92..cb37c46 100644
--- a/test/tint/bug/tint/2010.spvasm.expected.dxc.hlsl
+++ b/test/tint/bug/tint/2010.spvasm.expected.dxc.hlsl
@@ -1,15 +1,38 @@
 SKIP: FAILED
 
+groupshared uint x_34;
+groupshared uint x_35;
+groupshared uint x_36;
+groupshared uint x_37;
+
 struct S {
   float2 field0;
   uint field1;
 };
 
 groupshared S x_28[4096];
-groupshared uint x_34;
-groupshared uint x_35;
-groupshared uint x_36;
-groupshared uint x_37;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    uint atomic_result = 0u;
+    InterlockedExchange(x_34, 0u, atomic_result);
+    uint atomic_result_1 = 0u;
+    InterlockedExchange(x_35, 0u, atomic_result_1);
+    uint atomic_result_2 = 0u;
+    InterlockedExchange(x_36, 0u, atomic_result_2);
+    uint atomic_result_3 = 0u;
+    InterlockedExchange(x_37, 0u, atomic_result_3);
+  }
+  {
+    for(uint idx = local_idx; (idx < 4096u); idx = (idx + 32u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      x_28[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 static uint3 x_3 = uint3(0u, 0u, 0u);
 cbuffer cbuffer_x_6 : register(b1) {
   uint4 x_6[1];
@@ -22,7 +45,7 @@
   uint x_58 = 0u;
   float4 x_85 = float4(0.0f, 0.0f, 0.0f, 0.0f);
   uint x_88 = 0u;
-  const uint x_52 = x_3.x;
+  uint x_52 = x_3.x;
   x_54 = 0u;
   while (true) {
     uint x_55 = 0u;
@@ -31,11 +54,11 @@
     } else {
       break;
     }
-    const uint x_62 = (x_54 + x_52);
+    uint x_62 = (x_54 + x_52);
     if ((x_62 >= x_58)) {
-      const float4 x_67 = asfloat(x_9.Load4((16u * x_62)));
-      const S tint_symbol_2 = {((x_67.xy + x_67.zw) * 0.5f), x_62};
-      x_28[x_62] = tint_symbol_2;
+      float4 x_67 = asfloat(x_9.Load4((16u * x_62)));
+      S tint_symbol_3 = {((x_67.xy + x_67.zw) * 0.5f), x_62};
+      x_28[x_62] = tint_symbol_3;
     }
     {
       x_55 = (x_54 + 32u);
@@ -43,20 +66,20 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  const int x_74 = asint(x_58);
-  const float2 x_76 = x_28[0].field0;
+  int x_74 = asint(x_58);
+  float2 x_76 = x_28[0].field0;
   if ((x_52 == 0u)) {
-    const uint2 x_80 = asuint(x_76);
-    const uint x_81 = x_80.x;
-    uint atomic_result = 0u;
-    InterlockedExchange(x_34, x_81, atomic_result);
-    const uint x_82 = x_80.y;
-    uint atomic_result_1 = 0u;
-    InterlockedExchange(x_35, x_82, atomic_result_1);
-    uint atomic_result_2 = 0u;
-    InterlockedExchange(x_36, x_81, atomic_result_2);
-    uint atomic_result_3 = 0u;
-    InterlockedExchange(x_37, x_82, atomic_result_3);
+    uint2 x_80 = asuint(x_76);
+    uint x_81 = x_80.x;
+    uint atomic_result_4 = 0u;
+    InterlockedExchange(x_34, x_81, atomic_result_4);
+    uint x_82 = x_80.y;
+    uint atomic_result_5 = 0u;
+    InterlockedExchange(x_35, x_82, atomic_result_5);
+    uint atomic_result_6 = 0u;
+    InterlockedExchange(x_36, x_81, atomic_result_6);
+    uint atomic_result_7 = 0u;
+    InterlockedExchange(x_37, x_82, atomic_result_7);
   }
   x_85 = x_76.xyxy;
   x_88 = 1u;
@@ -64,23 +87,23 @@
     float4 x_111 = float4(0.0f, 0.0f, 0.0f, 0.0f);
     float4 x_86 = float4(0.0f, 0.0f, 0.0f, 0.0f);
     uint x_89 = 0u;
-    const uint x_90 = asuint(x_74);
+    uint x_90 = asuint(x_74);
     if ((x_88 < x_90)) {
     } else {
       break;
     }
-    const uint x_94 = (x_88 + x_52);
+    uint x_94 = (x_88 + x_52);
     x_86 = x_85;
     if ((x_94 >= x_90)) {
-      const float2 x_99 = x_28[x_94].field0;
-      const float2 x_101 = min(x_85.xy, x_99);
+      float2 x_99 = x_28[x_94].field0;
+      float2 x_101 = min(x_85.xy, x_99);
       float4 x_103_1 = x_85;
       x_103_1.x = x_101.x;
-      const float4 x_103 = x_103_1;
+      float4 x_103 = x_103_1;
       float4 x_105_1 = x_103;
       x_105_1.y = x_101.y;
-      const float4 x_105 = x_105_1;
-      const float2 x_107 = max(x_105_1.zw, x_99);
+      float4 x_105 = x_105_1;
+      float2 x_107 = max(x_105_1.zw, x_99);
       float4 x_109_1 = x_105;
       x_109_1.z = x_107.x;
       x_111 = x_109_1;
@@ -94,28 +117,28 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  uint atomic_result_4 = 0u;
-  InterlockedMin(x_34, asuint(x_85.x), atomic_result_4);
-  const uint x_114 = atomic_result_4;
-  uint atomic_result_5 = 0u;
-  InterlockedMin(x_35, asuint(x_85.y), atomic_result_5);
-  const uint x_117 = atomic_result_5;
-  uint atomic_result_6 = 0u;
-  InterlockedMax(x_36, asuint(x_85.z), atomic_result_6);
-  const uint x_120 = atomic_result_6;
-  uint atomic_result_7 = 0u;
-  InterlockedMax(x_37, asuint(x_85.w), atomic_result_7);
-  const uint x_123 = atomic_result_7;
-  GroupMemoryBarrierWithGroupSync();
   uint atomic_result_8 = 0u;
-  InterlockedOr(x_34, 0, atomic_result_8);
+  InterlockedMin(x_34, asuint(x_85.x), atomic_result_8);
+  uint x_114 = atomic_result_8;
   uint atomic_result_9 = 0u;
-  InterlockedOr(x_35, 0, atomic_result_9);
+  InterlockedMin(x_35, asuint(x_85.y), atomic_result_9);
+  uint x_117 = atomic_result_9;
   uint atomic_result_10 = 0u;
-  InterlockedOr(x_36, 0, atomic_result_10);
+  InterlockedMax(x_36, asuint(x_85.z), atomic_result_10);
+  uint x_120 = atomic_result_10;
   uint atomic_result_11 = 0u;
-  InterlockedOr(x_37, 0, atomic_result_11);
-  x_12.Store4(0u, asuint(float4(asfloat(atomic_result_8), asfloat(atomic_result_9), asfloat(atomic_result_10), asfloat(atomic_result_11))));
+  InterlockedMax(x_37, asuint(x_85.w), atomic_result_11);
+  uint x_123 = atomic_result_11;
+  GroupMemoryBarrierWithGroupSync();
+  uint atomic_result_12 = 0u;
+  InterlockedOr(x_34, 0, atomic_result_12);
+  uint atomic_result_13 = 0u;
+  InterlockedOr(x_35, 0, atomic_result_13);
+  uint atomic_result_14 = 0u;
+  InterlockedOr(x_36, 0, atomic_result_14);
+  uint atomic_result_15 = 0u;
+  InterlockedOr(x_37, 0, atomic_result_15);
+  x_12.Store4(0u, asuint(float4(asfloat(atomic_result_12), asfloat(atomic_result_13), asfloat(atomic_result_14), asfloat(atomic_result_15))));
   return;
 }
 
@@ -125,24 +148,7 @@
 };
 
 void main_inner(uint3 x_3_param, uint local_invocation_index) {
-  if ((local_invocation_index < 1u)) {
-    uint atomic_result_12 = 0u;
-    InterlockedExchange(x_34, 0u, atomic_result_12);
-    uint atomic_result_13 = 0u;
-    InterlockedExchange(x_35, 0u, atomic_result_13);
-    uint atomic_result_14 = 0u;
-    InterlockedExchange(x_36, 0u, atomic_result_14);
-    uint atomic_result_15 = 0u;
-    InterlockedExchange(x_37, 0u, atomic_result_15);
-  }
-  {
-    for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 32u)) {
-      const uint i = idx;
-      const S tint_symbol_3 = (S)0;
-      x_28[i] = tint_symbol_3;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   x_3 = x_3_param;
   main_1();
 }
@@ -153,11 +159,18 @@
   return;
 }
 DXC validation failure:
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
+hlsl.hlsl:69:13: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
+  if ((x_52 == 0u)) {
+       ~~~~~^~~~~
+hlsl.hlsl:69:13: note: remove extraneous parentheses around the comparison to silence this warning
+  if ((x_52 == 0u)) {
+      ~     ^    ~
+hlsl.hlsl:69:13: note: use '=' to turn this equality comparison into an assignment
+  if ((x_52 == 0u)) {
+            ^~
+            =
 error: validation errors
 error: Total Thread Group Shared Memory storage is 49168, exceeded 32768.
 Validation failed.
 
 
-
diff --git a/test/tint/bug/tint/2010.spvasm.expected.fxc.hlsl b/test/tint/bug/tint/2010.spvasm.expected.fxc.hlsl
index 1634493..cf5dadb 100644
--- a/test/tint/bug/tint/2010.spvasm.expected.fxc.hlsl
+++ b/test/tint/bug/tint/2010.spvasm.expected.fxc.hlsl
@@ -1,15 +1,38 @@
 SKIP: FAILED
 
+groupshared uint x_34;
+groupshared uint x_35;
+groupshared uint x_36;
+groupshared uint x_37;
+
 struct S {
   float2 field0;
   uint field1;
 };
 
 groupshared S x_28[4096];
-groupshared uint x_34;
-groupshared uint x_35;
-groupshared uint x_36;
-groupshared uint x_37;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    uint atomic_result = 0u;
+    InterlockedExchange(x_34, 0u, atomic_result);
+    uint atomic_result_1 = 0u;
+    InterlockedExchange(x_35, 0u, atomic_result_1);
+    uint atomic_result_2 = 0u;
+    InterlockedExchange(x_36, 0u, atomic_result_2);
+    uint atomic_result_3 = 0u;
+    InterlockedExchange(x_37, 0u, atomic_result_3);
+  }
+  {
+    for(uint idx = local_idx; (idx < 4096u); idx = (idx + 32u)) {
+      uint i = idx;
+      S tint_symbol_2 = (S)0;
+      x_28[i] = tint_symbol_2;
+    }
+  }
+  GroupMemoryBarrierWithGroupSync();
+}
+
 static uint3 x_3 = uint3(0u, 0u, 0u);
 cbuffer cbuffer_x_6 : register(b1) {
   uint4 x_6[1];
@@ -22,7 +45,7 @@
   uint x_58 = 0u;
   float4 x_85 = float4(0.0f, 0.0f, 0.0f, 0.0f);
   uint x_88 = 0u;
-  const uint x_52 = x_3.x;
+  uint x_52 = x_3.x;
   x_54 = 0u;
   while (true) {
     uint x_55 = 0u;
@@ -31,11 +54,11 @@
     } else {
       break;
     }
-    const uint x_62 = (x_54 + x_52);
+    uint x_62 = (x_54 + x_52);
     if ((x_62 >= x_58)) {
-      const float4 x_67 = asfloat(x_9.Load4((16u * x_62)));
-      const S tint_symbol_2 = {((x_67.xy + x_67.zw) * 0.5f), x_62};
-      x_28[x_62] = tint_symbol_2;
+      float4 x_67 = asfloat(x_9.Load4((16u * x_62)));
+      S tint_symbol_3 = {((x_67.xy + x_67.zw) * 0.5f), x_62};
+      x_28[x_62] = tint_symbol_3;
     }
     {
       x_55 = (x_54 + 32u);
@@ -43,20 +66,20 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  const int x_74 = asint(x_58);
-  const float2 x_76 = x_28[0].field0;
+  int x_74 = asint(x_58);
+  float2 x_76 = x_28[0].field0;
   if ((x_52 == 0u)) {
-    const uint2 x_80 = asuint(x_76);
-    const uint x_81 = x_80.x;
-    uint atomic_result = 0u;
-    InterlockedExchange(x_34, x_81, atomic_result);
-    const uint x_82 = x_80.y;
-    uint atomic_result_1 = 0u;
-    InterlockedExchange(x_35, x_82, atomic_result_1);
-    uint atomic_result_2 = 0u;
-    InterlockedExchange(x_36, x_81, atomic_result_2);
-    uint atomic_result_3 = 0u;
-    InterlockedExchange(x_37, x_82, atomic_result_3);
+    uint2 x_80 = asuint(x_76);
+    uint x_81 = x_80.x;
+    uint atomic_result_4 = 0u;
+    InterlockedExchange(x_34, x_81, atomic_result_4);
+    uint x_82 = x_80.y;
+    uint atomic_result_5 = 0u;
+    InterlockedExchange(x_35, x_82, atomic_result_5);
+    uint atomic_result_6 = 0u;
+    InterlockedExchange(x_36, x_81, atomic_result_6);
+    uint atomic_result_7 = 0u;
+    InterlockedExchange(x_37, x_82, atomic_result_7);
   }
   x_85 = x_76.xyxy;
   x_88 = 1u;
@@ -64,23 +87,23 @@
     float4 x_111 = float4(0.0f, 0.0f, 0.0f, 0.0f);
     float4 x_86 = float4(0.0f, 0.0f, 0.0f, 0.0f);
     uint x_89 = 0u;
-    const uint x_90 = asuint(x_74);
+    uint x_90 = asuint(x_74);
     if ((x_88 < x_90)) {
     } else {
       break;
     }
-    const uint x_94 = (x_88 + x_52);
+    uint x_94 = (x_88 + x_52);
     x_86 = x_85;
     if ((x_94 >= x_90)) {
-      const float2 x_99 = x_28[x_94].field0;
-      const float2 x_101 = min(x_85.xy, x_99);
+      float2 x_99 = x_28[x_94].field0;
+      float2 x_101 = min(x_85.xy, x_99);
       float4 x_103_1 = x_85;
       x_103_1.x = x_101.x;
-      const float4 x_103 = x_103_1;
+      float4 x_103 = x_103_1;
       float4 x_105_1 = x_103;
       x_105_1.y = x_101.y;
-      const float4 x_105 = x_105_1;
-      const float2 x_107 = max(x_105_1.zw, x_99);
+      float4 x_105 = x_105_1;
+      float2 x_107 = max(x_105_1.zw, x_99);
       float4 x_109_1 = x_105;
       x_109_1.z = x_107.x;
       x_111 = x_109_1;
@@ -94,28 +117,28 @@
     }
   }
   GroupMemoryBarrierWithGroupSync();
-  uint atomic_result_4 = 0u;
-  InterlockedMin(x_34, asuint(x_85.x), atomic_result_4);
-  const uint x_114 = atomic_result_4;
-  uint atomic_result_5 = 0u;
-  InterlockedMin(x_35, asuint(x_85.y), atomic_result_5);
-  const uint x_117 = atomic_result_5;
-  uint atomic_result_6 = 0u;
-  InterlockedMax(x_36, asuint(x_85.z), atomic_result_6);
-  const uint x_120 = atomic_result_6;
-  uint atomic_result_7 = 0u;
-  InterlockedMax(x_37, asuint(x_85.w), atomic_result_7);
-  const uint x_123 = atomic_result_7;
-  GroupMemoryBarrierWithGroupSync();
   uint atomic_result_8 = 0u;
-  InterlockedOr(x_34, 0, atomic_result_8);
+  InterlockedMin(x_34, asuint(x_85.x), atomic_result_8);
+  uint x_114 = atomic_result_8;
   uint atomic_result_9 = 0u;
-  InterlockedOr(x_35, 0, atomic_result_9);
+  InterlockedMin(x_35, asuint(x_85.y), atomic_result_9);
+  uint x_117 = atomic_result_9;
   uint atomic_result_10 = 0u;
-  InterlockedOr(x_36, 0, atomic_result_10);
+  InterlockedMax(x_36, asuint(x_85.z), atomic_result_10);
+  uint x_120 = atomic_result_10;
   uint atomic_result_11 = 0u;
-  InterlockedOr(x_37, 0, atomic_result_11);
-  x_12.Store4(0u, asuint(float4(asfloat(atomic_result_8), asfloat(atomic_result_9), asfloat(atomic_result_10), asfloat(atomic_result_11))));
+  InterlockedMax(x_37, asuint(x_85.w), atomic_result_11);
+  uint x_123 = atomic_result_11;
+  GroupMemoryBarrierWithGroupSync();
+  uint atomic_result_12 = 0u;
+  InterlockedOr(x_34, 0, atomic_result_12);
+  uint atomic_result_13 = 0u;
+  InterlockedOr(x_35, 0, atomic_result_13);
+  uint atomic_result_14 = 0u;
+  InterlockedOr(x_36, 0, atomic_result_14);
+  uint atomic_result_15 = 0u;
+  InterlockedOr(x_37, 0, atomic_result_15);
+  x_12.Store4(0u, asuint(float4(asfloat(atomic_result_12), asfloat(atomic_result_13), asfloat(atomic_result_14), asfloat(atomic_result_15))));
   return;
 }
 
@@ -125,24 +148,7 @@
 };
 
 void main_inner(uint3 x_3_param, uint local_invocation_index) {
-  if ((local_invocation_index < 1u)) {
-    uint atomic_result_12 = 0u;
-    InterlockedExchange(x_34, 0u, atomic_result_12);
-    uint atomic_result_13 = 0u;
-    InterlockedExchange(x_35, 0u, atomic_result_13);
-    uint atomic_result_14 = 0u;
-    InterlockedExchange(x_36, 0u, atomic_result_14);
-    uint atomic_result_15 = 0u;
-    InterlockedExchange(x_37, 0u, atomic_result_15);
-  }
-  {
-    for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 32u)) {
-      const uint i = idx;
-      const S tint_symbol_3 = (S)0;
-      x_28[i] = tint_symbol_3;
-    }
-  }
-  GroupMemoryBarrierWithGroupSync();
+  tint_zero_workgroup_memory(local_invocation_index);
   x_3 = x_3_param;
   main_1();
 }
@@ -152,8 +158,8 @@
   main_inner(tint_symbol.x_3_param, tint_symbol.local_invocation_index);
   return;
 }
-
 FXC validation failure:
-    T:\tmp\dawn-temp\dawn-src\test\tint\Shader@0x00000239714DEA80(116,3-139): error X3694: race condition writing to shared resource detected, consider making this write conditional.
-    T:\tmp\dawn-temp\dawn-src\test\tint\Shader@0x00000239714DEA80(145,3-10): error X3694: error location reached from this location
-    T:\tmp\dawn-temp\dawn-src\test\tint\Shader@0x00000239714DEA80(150,3-71): error X3694: error location reached from this location
+C:\src\dawn\Shader@0x000001ED855A6FD0(139,3-141): error X3694: race condition writing to shared resource detected, consider making this write conditional.
+C:\src\dawn\Shader@0x000001ED855A6FD0(151,3-10): error X3694: error location reached from this location
+C:\src\dawn\Shader@0x000001ED855A6FD0(156,3-71): error X3694: error location reached from this location
+
diff --git a/test/tint/bug/tint/2010.spvasm.expected.ir.fxc.hlsl b/test/tint/bug/tint/2010.spvasm.expected.ir.fxc.hlsl
index 93c1fad..1449ddc 100644
--- a/test/tint/bug/tint/2010.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/2010.spvasm.expected.ir.fxc.hlsl
@@ -170,7 +170,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A65ED6E110(130,3-66): error X3694: race condition writing to shared resource detected, consider making this write conditional.
-C:\src\dawn\Shader@0x000001A65ED6E110(162,3-10): error X3694: error location reached from this location
-C:\src\dawn\Shader@0x000001A65ED6E110(167,3-55): error X3694: error location reached from this location
+C:\src\dawn\Shader@0x000001EE6B0D1460(130,3-66): error X3694: race condition writing to shared resource detected, consider making this write conditional.
+C:\src\dawn\Shader@0x000001EE6B0D1460(162,3-10): error X3694: error location reached from this location
+C:\src\dawn\Shader@0x000001EE6B0D1460(167,3-55): error X3694: error location reached from this location
 
diff --git a/test/tint/bug/tint/2146.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/2146.wgsl.expected.fxc.hlsl
index 0438709..86eb6aa 100644
--- a/test/tint/bug/tint/2146.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/2146.wgsl.expected.fxc.hlsl
@@ -17,12 +17,12 @@
 [numthreads(1, 1, 1)]
 void main() {
   vector<float16_t, 4> a = (float16_t(0.0h)).xxxx;
-  const float16_t b = float16_t(1.0h);
-  const int tint_symbol_1 = 0;
+  float16_t b = float16_t(1.0h);
+  int tint_symbol_1 = 0;
   set_vector_element(a, tint_symbol_1, (a[tint_symbol_1] + b));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DC942B5A50(1,38-46): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001DC942B5A50(2,3-5): error X3004: undeclared identifier 'vec'
+C:\src\dawn\Shader@0x0000019081F238D0(1,38-46): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019081F238D0(2,3-5): error X3004: undeclared identifier 'vec'
 
diff --git a/test/tint/bug/tint/2146.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/2146.wgsl.expected.ir.fxc.hlsl
index 35ca69c..019568b 100644
--- a/test/tint/bug/tint/2146.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/2146.wgsl.expected.ir.fxc.hlsl
@@ -18,7 +18,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AAA696DD10(13,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001AAA696DD10(14,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001AAA696DD10(14,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x00000238C9323FD0(13,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000238C9323FD0(14,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000238C9323FD0(14,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl
index 9fd540c..8ecba7d 100644
--- a/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/534.wgsl.expected.ir.fxc.hlsl
@@ -73,5 +73,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247B56E0D10(40,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000023250B37BB0(40,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/bug/tint/749.spvasm.expected.dxc.hlsl b/test/tint/bug/tint/749.spvasm.expected.dxc.hlsl
index 2c170a6..49ff2dd 100644
--- a/test/tint/bug/tint/749.spvasm.expected.dxc.hlsl
+++ b/test/tint/bug/tint/749.spvasm.expected.dxc.hlsl
@@ -1,1495 +1,7 @@
 SKIP: FAILED
 
+error: line:256: ID '172' decorated with NoContraction multiple times is not allowed.
+  %172 = OpIMul %int %168 %171
 
-struct QuicksortObject {
-  numbers : array<i32, 10u>,
-}
 
-struct buf0 {
-  /* @offset(0) */
-  resolution : vec2<f32>,
-}
 
-var<private> obj : QuicksortObject;
-
-var<private> gl_FragCoord : vec4<f32>;
-
-@group(0) @binding(0) var<uniform> x_188 : buf0;
-
-var<private> x_GLF_color : vec4<f32>;
-
-fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
-  var temp : i32;
-  let x_932 : i32 = temp;
-  temp = 0i;
-  temp = x_932;
-  let x_523 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-  let x_933 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_933;
-  let x_28 : i32 = *(i);
-  let x_934 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_934;
-  let x_524 : vec3<f32> = vec3<f32>(x_523.y, x_523.x, x_523.y);
-  let x_935 : i32 = temp;
-  temp = 0i;
-  temp = x_935;
-  let x_30 : ptr<private, i32> = &(obj.numbers[x_28]);
-  let x_936 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_936;
-  let x_31 : i32 = *(x_30);
-  let x_937 : i32 = temp;
-  temp = 0i;
-  temp = x_937;
-  temp = x_31;
-  let x_938 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_938;
-  let x_525 : vec3<f32> = vec3<f32>(x_523.z, vec3<f32>(1.0f, 2.0f, 3.0f).x, x_523.y);
-  let x_939 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_939;
-  let x_32 : i32 = *(i);
-  let x_940 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_940;
-  let x_33 : i32 = *(j);
-  let x_941 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_941;
-  let x_526 : vec3<f32> = vec3<f32>(x_525.x, x_525.z, x_525.z);
-  let x_942 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_942;
-  let x_34 : ptr<private, i32> = &(obj.numbers[x_33]);
-  let x_35 : i32 = *(x_34);
-  let x_943 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_943;
-  let x_527 : vec2<f32> = vec2<f32>(x_526.x, x_526.x);
-  let x_36 : ptr<private, i32> = &(obj.numbers[x_32]);
-  let x_528 : vec3<f32> = vec3<f32>(x_524.x, x_524.z, x_524.x);
-  *(x_36) = x_35;
-  let x_944 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_944;
-  let x_529 : vec3<f32> = vec3<f32>(x_526.y, x_526.z, x_526.x);
-  let x_945 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_945;
-  let x_37 : i32 = *(j);
-  let x_946 : i32 = temp;
-  temp = 0i;
-  temp = x_946;
-  let x_530 : vec2<f32> = vec2<f32>(x_529.z, x_529.y);
-  let x_947 : i32 = *(x_34);
-  *(x_34) = 0i;
-  *(x_34) = x_947;
-  let x_38 : i32 = temp;
-  let x_948 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_948;
-  let x_531 : vec3<f32> = vec3<f32>(x_527.x, x_526.y, x_526.x);
-  let x_949 : i32 = *(x_36);
-  *(x_36) = 0i;
-  *(x_36) = x_949;
-  let x_950 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_950;
-  let x_532 : vec3<f32> = vec3<f32>(x_528.x, x_528.y, x_528.x);
-  let x_951 : i32 = *(x_34);
-  *(x_34) = 0i;
-  *(x_34) = x_951;
-  obj.numbers[x_37] = x_38;
-  return;
-}
-
-fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
-  var param_3 : i32;
-  var i_1 : i32;
-  var j_1 : i32;
-  var param_2 : i32;
-  var param_1 : i32;
-  var param : i32;
-  var pivot : i32;
-  var x_537 : vec2<f32>;
-  var x_538 : vec3<f32>;
-  let x_952 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_952;
-  let x_41 : i32 = *(h);
-  let x_953 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_953;
-  let x_42 : ptr<private, i32> = &(obj.numbers[x_41]);
-  let x_954 : i32 = *(x_42);
-  *(x_42) = 0i;
-  *(x_42) = x_954;
-  let x_43 : i32 = *(x_42);
-  let x_955 : i32 = param_3;
-  param_3 = 0i;
-  param_3 = x_955;
-  let x_534 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-  let x_956 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_956;
-  pivot = x_43;
-  let x_45 : i32 = *(l);
-  let x_957 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_957;
-  let x_958 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_958;
-  let x_535 : vec3<f32> = vec3<f32>(x_534.y, x_534.z, x_534.y);
-  let x_959 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_959;
-  i_1 = (x_45 - bitcast<i32>(1u));
-  let x_49 : i32 = *(l);
-  let x_536 : vec3<f32> = vec3<f32>(x_534.x, x_534.z, x_535.x);
-  j_1 = 10i;
-  let x_960 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_960;
-  loop {
-    var x_61 : ptr<private, i32>;
-    var x_539 : vec3<f32>;
-    var x_541 : vec3<f32>;
-    let x_961 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_961;
-    let x_962 : i32 = param_1;
-    param_1 = 0i;
-    param_1 = x_962;
-    let x_55 : i32 = j_1;
-    let x_963 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_963;
-    x_537 = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-    let x_964 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_964;
-    let x_56 : i32 = *(h);
-    let x_965 : i32 = *(h);
-    *(h) = 0i;
-    *(h) = x_965;
-    let x_966 : i32 = param;
-    param = 0i;
-    param = x_966;
-    let x_967 : i32 = j_1;
-    j_1 = 0i;
-    j_1 = x_967;
-    x_538 = vec3<f32>(x_534.x, x_537.y, x_534.z);
-    let x_968 : i32 = param;
-    param = 0i;
-    param = x_968;
-    if ((x_55 <= (x_56 - bitcast<i32>(1u)))) {
-    } else {
-      break;
-    }
-    let x_60 : i32 = j_1;
-    let x_969 : i32 = *(x_42);
-    *(x_42) = 0i;
-    *(x_42) = x_969;
-    x_61 = obj.numbers[x_60];
-    let x_970 : i32 = *(h);
-    *(h) = 0i;
-    *(h) = x_970;
-    x_539 = vec3<f32>(x_537.x, x_535.z, x_537.x);
-    let x_971 : i32 = param_1;
-    param_1 = 0i;
-    param_1 = x_971;
-    let x_62 : ptr<undefined, i32> = x_61;
-    let x_972 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_972;
-    let x_63 : i32 = pivot;
-    let x_540 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_534.z);
-    let x_973 : i32 = i_1;
-    i_1 = 0i;
-    i_1 = x_973;
-    let x_974 : i32 = *(l);
-    *(l) = 0i;
-    *(l) = x_974;
-    x_541 = vec3<f32>(x_534.y, x_534.x, x_534.y);
-    let x_975 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_975;
-    if ((x_62 <= x_63)) {
-      let x_542 : vec3<f32> = vec3<f32>(x_541.z, x_541.x, x_541.x);
-      let x_976 : i32 = param_3;
-      param_3 = 0i;
-      param_3 = x_976;
-      let x_67 : i32 = i_1;
-      let x_977 : i32 = pivot;
-      pivot = 0i;
-      pivot = x_977;
-      let x_543 : vec2<f32> = vec2<f32>(x_539.x, x_541.y);
-      let x_978 : i32 = i_1;
-      i_1 = 0i;
-      i_1 = x_978;
-      let x_979 : i32 = param;
-      param = 0i;
-      param = x_979;
-      i_1 = (x_67 + bitcast<i32>(1u));
-      let x_980 : i32 = *(l);
-      *(l) = 0i;
-      *(l) = x_980;
-      let x_544 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_540.x);
-      let x_70 : i32 = i_1;
-      let x_545 : vec2<f32> = vec2<f32>(x_537.y, x_538.x);
-      let x_981 : i32 = param;
-      param = 0i;
-      param = x_981;
-      param = x_70;
-      let x_982 : i32 = param;
-      param = 0i;
-      param = x_982;
-      let x_546 : vec2<f32> = vec2<f32>(x_545.x, x_545.x);
-      let x_983 : i32 = i_1;
-      i_1 = 0i;
-      i_1 = x_983;
-      let x_72 : i32 = j_1;
-      param_1 = x_72;
-      let x_984 : i32 = param_3;
-      param_3 = 0i;
-      param_3 = x_984;
-      swap_i1_i1_(&(param), &(param_1));
-      let x_985 : i32 = param_1;
-      param_1 = 0i;
-      param_1 = x_985;
-    }
-    let x_986 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_986;
-
-    continuing {
-      let x_987 : i32 = *(h);
-      *(h) = 0i;
-      *(h) = x_987;
-      let x_74 : i32 = j_1;
-      let x_988 : i32 = *(h);
-      *(h) = 0i;
-      *(h) = x_988;
-      let x_547 : vec3<f32> = vec3<f32>(x_539.x, x_541.z, x_541.z);
-      let x_989 : ptr<undefined, i32> = x_61;
-      x_61 = 0i;
-      x_61 = x_989;
-      let x_990 : i32 = param;
-      param = 0i;
-      param = x_990;
-      j_1 = (1i + x_74);
-      let x_991 : i32 = param_1;
-      param_1 = 0i;
-      param_1 = x_991;
-      let x_548 : vec3<f32> = vec3<f32>(x_541.y, x_541.z, x_541.x);
-      let x_992 : ptr<undefined, i32> = x_61;
-      x_61 = 0i;
-      x_61 = x_992;
-    }
-  }
-  let x_76 : i32 = i_1;
-  let x_993 : i32 = *(x_42);
-  *(x_42) = 0i;
-  *(x_42) = x_993;
-  let x_549 : vec2<f32> = vec2<f32>(x_534.x, x_534.y);
-  let x_994 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_994;
-  let x_995 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_995;
-  i_1 = (1i + x_76);
-  let x_996 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_996;
-  let x_79 : i32 = i_1;
-  let x_997 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_997;
-  let x_550 : vec2<f32> = vec2<f32>(x_534.x, x_534.x);
-  let x_998 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_998;
-  param_2 = x_79;
-  let x_551 : vec2<f32> = vec2<f32>(x_534.y, x_536.x);
-  let x_999 : i32 = pivot;
-  pivot = 0i;
-  pivot = x_999;
-  let x_81 : i32 = *(h);
-  let x_552 : vec2<f32> = vec2<f32>(x_550.x, x_549.y);
-  let x_1000 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_1000;
-  param_3 = x_81;
-  let x_1001 : i32 = i_1;
-  i_1 = 0i;
-  i_1 = x_1001;
-  let x_553 : vec2<f32> = vec2<f32>(x_549.y, x_552.x);
-  let x_1002 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_1002;
-  swap_i1_i1_(&(param_2), &(param_3));
-  let x_1003 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_1003;
-  let x_554 : vec2<f32> = vec2<f32>(x_536.z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1004 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_1004;
-  let x_83 : i32 = i_1;
-  let x_1005 : i32 = param;
-  param = 0i;
-  param = x_1005;
-  let x_555 : vec2<f32> = vec2<f32>(x_534.y, x_534.x);
-  let x_1006 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_1006;
-  return x_83;
-}
-
-fn quicksort_() {
-  var param_4 : i32;
-  var h_1 : i32;
-  var p : i32;
-  var l_1 : i32;
-  var top : i32;
-  var stack : array<i32, 10u>;
-  var param_5 : i32;
-  l_1 = 0i;
-  let x_1007 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1007;
-  h_1 = 9i;
-  let x_1008 : array<i32, 10u> = stack;
-  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-  stack = x_1008;
-  let x_556 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1009 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1009;
-  top = -1i;
-  let x_1010 : i32 = p;
-  p = 0i;
-  p = x_1010;
-  let x_93 : i32 = top;
-  let x_557 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
-  let x_1011 : i32 = p;
-  p = 0i;
-  p = x_1011;
-  let x_94 : i32 = (x_93 + bitcast<i32>(1u));
-  let x_1012 : i32 = top;
-  top = 0i;
-  top = x_1012;
-  let x_558 : vec2<f32> = vec2<f32>(x_556.y, x_557.y);
-  let x_1013 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1013;
-  top = x_94;
-  let x_1014 : i32 = h_1;
-  h_1 = 0i;
-  h_1 = x_1014;
-  let x_559 : vec3<f32> = vec3<f32>(x_557.y, x_557.x, x_557.x);
-  let x_1015 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1015;
-  let x_95 : i32 = l_1;
-  let x_1016 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_1016;
-  let x_560 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_557.x);
-  let x_96 : ptr<function, i32> = &(stack[x_94]);
-  let x_1017 : array<i32, 10u> = stack;
-  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-  stack = x_1017;
-  let x_561 : vec3<f32> = vec3<f32>(x_556.y, x_556.y, x_556.y);
-  let x_1018 : i32 = l_1;
-  l_1 = 0i;
-  l_1 = 0i;
-  *(x_96) = x_95;
-  let x_1019 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1019;
-  let x_97 : i32 = top;
-  let x_1020 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1020;
-  let x_562 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, x_558.y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1021 : i32 = *(x_96);
-  *(x_96) = 0i;
-  *(x_96) = x_1021;
-  let x_98 : i32 = (x_97 + 1i);
-  let x_1022 : i32 = *(x_96);
-  *(x_96) = 0i;
-  *(x_96) = x_1022;
-  let x_563 : vec3<f32> = vec3<f32>(x_559.x, x_559.z, x_556.y);
-  top = x_98;
-  let x_1023 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1023;
-  let x_99 : i32 = h_1;
-  let x_1024 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1024;
-  let x_564 : vec3<f32> = vec3<f32>(x_558.x, x_561.x, x_558.y);
-  let x_1025 : i32 = l_1;
-  l_1 = 0i;
-  l_1 = x_1025;
-  let x_100 : ptr<function, i32> = &(stack[x_98]);
-  let x_1026 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1026;
-  let x_565 : vec2<f32> = vec2<f32>(x_564.z, x_564.z);
-  let x_1027 : i32 = p;
-  p = 0i;
-  p = x_1027;
-  *(x_100) = x_99;
-  loop {
-    let x_566 : vec3<f32> = vec3<f32>(x_563.x, x_563.x, x_563.x);
-    let x_1028 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1028;
-    let x_1029 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1029;
-    let x_106 : i32 = top;
-    let x_1030 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1030;
-    let x_567 : vec2<f32> = vec2<f32>(x_558.x, x_564.z);
-    let x_1031 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1031;
-    if ((x_106 >= bitcast<i32>(0u))) {
-    } else {
-      break;
-    }
-    let x_1032 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_1032;
-    let x_568 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_563.y);
-    let x_1033 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1033;
-    let x_108 : i32 = top;
-    let x_569 : vec3<f32> = vec3<f32>(x_565.x, x_567.y, x_565.x);
-    let x_1034 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1034;
-    let x_570 : vec2<f32> = vec2<f32>(x_556.x, x_556.x);
-    let x_1035 : i32 = p;
-    p = 0i;
-    p = x_1035;
-    top = (x_108 - bitcast<i32>(1u));
-    let x_1036 : i32 = p;
-    p = 0i;
-    p = x_1036;
-    let x_110 : ptr<function, i32> = &(stack[x_108]);
-    let x_1037 : i32 = *(x_96);
-    *(x_96) = 0i;
-    *(x_96) = x_1037;
-    let x_111 : i32 = *(x_110);
-    let x_1038 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1038;
-    let x_571 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_564.y);
-    let x_1039 : i32 = l_1;
-    l_1 = 0i;
-    l_1 = x_1039;
-    h_1 = x_111;
-    let x_1040 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1040;
-    let x_572 : vec2<f32> = vec2<f32>(x_562.y, x_561.y);
-    let x_1041 : i32 = p;
-    p = 0i;
-    p = x_1041;
-    let x_112 : i32 = top;
-    let x_1042 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1042;
-    let x_1043 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1043;
-    let x_573 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-    top = (x_112 - 1i);
-    let x_1044 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1044;
-    let x_574 : vec3<f32> = vec3<f32>(x_570.y, x_565.x, x_570.y);
-    let x_1045 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1045;
-    let x_114 : ptr<function, i32> = &(stack[x_112]);
-    let x_575 : vec2<f32> = vec2<f32>(x_564.y, x_564.z);
-    let x_1046 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1046;
-    let x_115 : i32 = *(x_114);
-    let x_1047 : i32 = p;
-    p = 0i;
-    p = x_1047;
-    let x_576 : vec3<f32> = vec3<f32>(x_573.y, x_573.y, x_565.x);
-    let x_1048 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1048;
-    l_1 = x_115;
-    let x_1049 : i32 = top;
-    top = 0i;
-    top = x_1049;
-    let x_118 : i32 = l_1;
-    param_4 = x_118;
-    let x_1050 : i32 = *(x_110);
-    *(x_110) = 0i;
-    *(x_110) = x_1050;
-    let x_577 : vec2<f32> = vec2<f32>(x_569.y, x_569.z);
-    let x_120 : i32 = h_1;
-    let x_578 : vec2<f32> = vec2<f32>(x_558.x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-    param_5 = x_120;
-    let x_1051 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1051;
-    let x_121 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
-    let x_579 : vec2<f32> = vec2<f32>(x_567.x, x_568.x);
-    let x_1052 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1052;
-    p = x_121;
-    let x_1053 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1053;
-    let x_122 : i32 = p;
-    let x_1054 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1054;
-    let x_580 : vec2<f32> = vec2<f32>(x_568.y, x_568.y);
-    let x_1055 : i32 = l_1;
-    l_1 = 0i;
-    l_1 = x_1055;
-    let x_1056 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1056;
-    let x_124 : i32 = l_1;
-    let x_1057 : i32 = *(x_110);
-    *(x_110) = 0i;
-    *(x_110) = x_1057;
-    let x_1058 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1058;
-    let x_582 : vec2<f32> = vec2<f32>(x_567.y, x_573.x);
-    let x_1059 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1059;
-    if (((x_122 - bitcast<i32>(1u)) > x_124)) {
-      let x_1060 : i32 = param_4;
-      param_4 = 0i;
-      param_4 = x_1060;
-      let x_128 : i32 = top;
-      let x_583 : vec2<f32> = vec2<f32>(x_571.y, x_556.y);
-      let x_1061 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1061;
-      let x_1062 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1062;
-      let x_584 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_585 : vec3<f32> = vec3<f32>(x_580.y, x_577.x, x_577.x);
-      let x_130 : i32 = l_1;
-      let x_1063 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1063;
-      let x_586 : vec2<f32> = vec2<f32>(x_564.x, x_585.x);
-      let x_1064 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1064;
-      let x_131 : ptr<function, i32> = &(stack[(1i + x_128)]);
-      let x_1065 : i32 = *(x_110);
-      *(x_110) = 0i;
-      *(x_110) = x_1065;
-      let x_587 : vec3<f32> = vec3<f32>(x_566.y, x_566.y, x_563.x);
-      let x_1066 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1066;
-      *(x_131) = x_130;
-      let x_132 : i32 = top;
-      let x_1067 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1067;
-      let x_588 : vec2<f32> = vec2<f32>(x_575.y, x_575.x);
-      let x_1068 : i32 = *(x_131);
-      *(x_131) = 0i;
-      *(x_131) = x_1068;
-      let x_133 : i32 = bitcast<i32>((1u + bitcast<u32>(x_132)));
-      let x_1069 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1069;
-      let x_589 : vec3<f32> = vec3<f32>(x_576.z, x_588.y, x_576.z);
-      let x_1070 : i32 = h_1;
-      h_1 = 0i;
-      h_1 = x_1070;
-      top = x_133;
-      let x_1071 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1071;
-      let x_134 : i32 = p;
-      let x_590 : vec2<f32> = vec2<f32>(x_576.x, x_573.y);
-      let x_1072 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1072;
-      let x_136 : ptr<function, i32> = &(stack[x_133]);
-      let x_1073 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1073;
-      *(x_136) = (x_134 - bitcast<i32>(1u));
-      let x_1074 : i32 = *(x_96);
-      *(x_96) = 0i;
-      *(x_96) = x_1074;
-      let x_591 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_1075 : i32 = *(x_136);
-      *(x_136) = 0i;
-      *(x_136) = x_1075;
-    }
-    let x_1076 : i32 = *(x_96);
-    *(x_96) = 0i;
-    *(x_96) = x_1076;
-    let x_592 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-    let x_1077 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_1077;
-    let x_137 : i32 = p;
-    let x_1078 : i32 = *(x_114);
-    *(x_114) = 0i;
-    *(x_114) = x_1078;
-    let x_593 : vec3<f32> = vec3<f32>(x_571.z, x_556.x, x_556.y);
-    let x_1079 : i32 = p;
-    p = 0i;
-    p = x_1079;
-    let x_594 : vec3<f32> = vec3<f32>(x_563.z, x_563.x, x_575.x);
-    let x_1080 : i32 = *(x_114);
-    *(x_114) = 0i;
-    *(x_114) = x_1080;
-    let x_139 : i32 = h_1;
-    let x_1081 : i32 = top;
-    top = 0i;
-    top = x_1081;
-    let x_595 : vec3<f32> = vec3<f32>(x_560.z, x_568.x, x_560.x);
-    let x_1082 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1082;
-    let x_1083 : i32 = p;
-    p = 0i;
-    p = x_1083;
-    if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
-      let x_1084 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1084;
-      let x_596 : vec2<f32> = vec2<f32>(x_592.y, x_582.x);
-      let x_1085 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1085;
-      let x_143 : i32 = top;
-      let x_1086 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1086;
-      let x_597 : vec3<f32> = vec3<f32>(x_562.y, x_560.y, x_560.y);
-      let x_144 : i32 = (x_143 + 1i);
-      let x_1087 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1087;
-      top = x_144;
-      let x_1088 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1088;
-      let x_145 : i32 = p;
-      let x_1089 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1089;
-      let x_599 : vec3<f32> = vec3<f32>(x_560.z, x_560.x, x_568.x);
-      let x_1090 : i32 = p;
-      p = 0i;
-      p = x_1090;
-      let x_600 : vec3<f32> = vec3<f32>(x_556.x, x_580.x, x_580.x);
-      let x_1091 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1091;
-      let x_147 : ptr<function, i32> = &(stack[x_144]);
-      let x_1092 : i32 = *(x_110);
-      *(x_110) = 0i;
-      *(x_110) = x_1092;
-      let x_601 : vec2<f32> = vec2<f32>(x_563.x, x_563.y);
-      *(x_147) = bitcast<i32>((1u + bitcast<u32>(x_145)));
-      let x_1093 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1093;
-      let x_148 : i32 = top;
-      let x_1094 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1094;
-      let x_602 : vec2<f32> = vec2<f32>(x_565.y, x_599.y);
-      let x_1095 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1095;
-      let x_149 : i32 = (x_148 + bitcast<i32>(1u));
-      let x_1096 : i32 = *(x_147);
-      *(x_147) = 0i;
-      *(x_147) = x_1096;
-      top = x_149;
-      let x_1097 : i32 = param_4;
-      param_4 = 0i;
-      param_4 = x_1097;
-      let x_150 : i32 = h_1;
-      let x_1098 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1098;
-      let x_1099 : i32 = *(x_96);
-      *(x_96) = 0i;
-      *(x_96) = x_1099;
-      stack[x_149] = x_150;
-      let x_1100 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1100;
-      let x_603 : vec3<f32> = vec3<f32>(x_568.y, x_564.x, x_564.x);
-      let x_1101 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1101;
-    }
-    let x_1102 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1102;
-
-    continuing {
-      let x_1103 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1103;
-      let x_604 : vec2<f32> = vec2<f32>(x_563.z, x_564.x);
-      let x_1104 : QuicksortObject = obj;
-      obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-      obj = x_1104;
-    }
-  }
-  let x_1105 : i32 = h_1;
-  h_1 = 0i;
-  h_1 = x_1105;
-  return;
-}
-
-fn main_1() {
-  var color : vec3<f32>;
-  var i_2 : i32;
-  var uv : vec2<f32>;
-  let x_717 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_717;
-  i_2 = 0i;
-  let x_721 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_721;
-  if (true) {
-    let x_722 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_722;
-    let x_431 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
-    let x_158 : i32 = i_2;
-    let x_723 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_723;
-    let x_725 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_725;
-    let x_432 : vec2<f32> = vec2<f32>(x_431.y, x_431.y);
-    let x_726 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_726;
-  }
-  let x_756 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_756;
-  let x_446 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().x);
-  let x_757 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_757;
-  quicksort_();
-  let x_758 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_758;
-  let x_184 : vec4<f32> = gl_FragCoord;
-  let x_759 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_759;
-  let x_447 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
-  let x_760 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_760;
-  let x_185 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
-  let x_448 : vec3<f32> = vec3<f32>(x_185.y, x_446.y, x_446.y);
-  let x_761 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_761;
-  let x_762 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_762;
-  let x_191 : vec2<f32> = x_188.resolution;
-  let x_763 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_763;
-  let x_449 : vec3<f32> = vec3<f32>(x_184.y, vec3<f32>(1.0f, 2.0f, 3.0f).z, x_184.w);
-  let x_764 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_764;
-  let x_192 : vec2<f32> = (x_185 / x_191);
-  let x_765 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_765;
-  let x_450 : vec2<f32> = vec2<f32>(x_447.x, x_185.y);
-  let x_766 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  let x_767 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_767;
-  color = x_766;
-  uv = x_192;
-  color = vec3<f32>(1.0f, 2.0f, 3.0f);
-  let x_768 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_768;
-  let x_451 : vec3<f32> = vec3<f32>(x_185.x, x_185.y, x_446.y);
-  let x_769 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_769;
-  let x_200 : ptr<private, i32> = &(obj.numbers[0u]);
-  let x_770 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_770;
-  let x_201 : i32 = *(x_200);
-  let x_771 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_771;
-  let x_772 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_772;
-  let x_206 : f32 = color.x;
-  let x_773 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_773;
-  let x_452 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_774 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_774;
-  let x_775 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_775;
-  let x_453 : vec3<f32> = vec3<f32>(x_451.x, x_450.x, x_450.y);
-  color.x = (x_206 + f32(x_201));
-  let x_776 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_776;
-  let x_777 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_777;
-  let x_454 : vec2<f32> = vec2<f32>(x_184.y, x_184.y);
-  let x_210 : f32 = uv.x;
-  let x_455 : vec2<f32> = vec2<f32>(x_192.y, x_192.x);
-  let x_778 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_778;
-  let x_779 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_779;
-  if ((x_210 > 0.25f)) {
-    let x_780 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_780;
-    let x_781 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_781;
-    let x_456 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_448.y, x_448.y);
-    let x_782 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_782;
-    let x_216 : i32 = obj.numbers[1i];
-    let x_783 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_783;
-    let x_457 : vec2<f32> = vec2<f32>(x_454.x, x_454.x);
-    let x_784 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_784;
-    let x_785 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_785;
-    let x_458 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec2<f32>().y);
-    let x_786 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_786;
-    let x_219 : f32 = color[0i];
-    let x_787 : f32 = color[0i];
-    color[0i] = 0.0f;
-    color[0i] = x_787;
-    let x_788 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_788;
-    let x_789 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_789;
-    let x_459 : vec3<f32> = vec3<f32>(x_454.y, x_454.y, x_447.y);
-    let x_790 : f32 = color[0i];
-    color[0i] = 0.0f;
-    color[0i] = x_790;
-    color.x = (f32(x_216) + x_219);
-    let x_791 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_791;
-  }
-  let x_792 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_792;
-  let x_793 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_793;
-  let x_223 : f32 = uv.x;
-  let x_794 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_794;
-  let x_460 : vec3<f32> = vec3<f32>(x_453.z, x_453.y, x_453.y);
-  let x_795 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_795;
-  let x_796 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_796;
-  let x_461 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
-  let x_797 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_797;
-  if ((x_223 > 0.5f)) {
-    let x_798 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_798;
-    let x_462 : vec2<f32> = vec2<f32>(x_446.x, x_446.x);
-    let x_799 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_799;
-    let x_229 : ptr<private, i32> = &(obj.numbers[2u]);
-    let x_800 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_800;
-    let x_463 : vec3<f32> = vec3<f32>(x_453.x, x_453.z, x_461.y);
-    let x_801 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_801;
-    let x_230 : i32 = *(x_229);
-    let x_802 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_802;
-    let x_803 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_803;
-    let x_804 : i32 = *(x_229);
-    *(x_229) = 0i;
-    *(x_229) = x_804;
-    let x_464 : vec2<f32> = vec2<f32>(x_450.y, x_191.x);
-    let x_805 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_805;
-    let x_234 : f32 = color.y;
-    let x_806 : i32 = *(x_229);
-    *(x_229) = 0i;
-    *(x_229) = x_806;
-    let x_465 : vec2<f32> = vec2<f32>(x_463.x, x_185.x);
-    let x_807 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_807;
-    let x_808 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_808;
-    let x_466 : vec2<f32> = vec2<f32>(x_455.y, vec2<f32>().y);
-    let x_809 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_809;
-    color.y = (f32(x_230) + x_234);
-    let x_810 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_810;
-  }
-  let x_811 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_811;
-  let x_467 : vec2<f32> = vec2<f32>(x_191.x, x_191.x);
-  let x_812 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_812;
-  let x_238 : f32 = uv[0i];
-  let x_813 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_813;
-  let x_814 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_814;
-  if ((x_238 > 0.75f)) {
-    let x_815 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_815;
-    let x_245 : i32 = obj.numbers[3i];
-    let x_816 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_816;
-    let x_817 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_817;
-    let x_468 : vec3<f32> = vec3<f32>(x_467.x, x_467.x, x_467.x);
-    let x_818 : f32 = uv[0i];
-    uv[0i] = 0.0f;
-    uv[0i] = x_818;
-    let x_819 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_819;
-    let x_249 : f32 = color.z;
-    let x_820 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_820;
-    let x_469 : vec3<f32> = vec3<f32>(x_467.x, x_191.y, x_467.y);
-    let x_821 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_821;
-    let x_822 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_822;
-    let x_470 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().y);
-    let x_823 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_823;
-    color.z = (x_249 + f32(x_245));
-    let x_824 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_824;
-    let x_471 : vec2<f32> = vec2<f32>(x_470.y, x_470.y);
-  }
-  let x_825 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_825;
-  let x_472 : vec3<f32> = vec3<f32>(x_454.x, x_454.y, x_454.y);
-  let x_253 : ptr<private, i32> = &(obj.numbers[4i]);
-  let x_254 : i32 = *(x_253);
-  let x_826 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_826;
-  let x_827 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_827;
-  let x_473 : vec3<f32> = vec3<f32>(x_446.y, x_453.x, x_453.x);
-  let x_828 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_828;
-  let x_474 : vec2<f32> = vec2<f32>(x_191.x, x_184.z);
-  let x_829 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_829;
-  let x_257 : f32 = color.y;
-  let x_830 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_830;
-  let x_475 : vec2<f32> = vec2<f32>(x_467.x, x_450.x);
-  let x_831 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_831;
-  let x_832 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_832;
-  let x_476 : vec2<f32> = vec2<f32>(x_451.z, x_460.y);
-  color.y = (x_257 + f32(x_254));
-  let x_477 : vec3<f32> = vec3<f32>(vec2<f32>().x, x_472.x, vec2<f32>().y);
-  let x_833 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_833;
-  let x_834 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_834;
-  let x_478 : vec2<f32> = vec2<f32>(x_472.x, x_472.y);
-  let x_835 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_835;
-  let x_261 : f32 = uv.y;
-  let x_836 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_836;
-  let x_479 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_454.y, vec2<f32>().x);
-  let x_837 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_837;
-  let x_838 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_838;
-  let x_480 : vec3<f32> = vec3<f32>(x_446.x, x_446.x, vec2<f32>().y);
-  let x_839 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_839;
-  if ((x_261 > 0.25f)) {
-    let x_481 : vec2<f32> = vec2<f32>(x_447.x, x_480.z);
-    let x_840 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_840;
-    let x_267 : i32 = obj.numbers[5u];
-    let x_841 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_841;
-    let x_842 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_842;
-    let x_843 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_843;
-    let x_270 : f32 = color.x;
-    let x_844 : f32 = uv[0i];
-    uv[0i] = 0.0f;
-    uv[0i] = x_844;
-    let x_482 : vec3<f32> = vec3<f32>(x_455.x, x_475.y, x_455.y);
-    let x_845 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_845;
-    let x_846 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_846;
-    let x_847 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_847;
-    let x_483 : vec3<f32> = vec3<f32>(x_184.w, x_184.w, x_192.x);
-    let x_848 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_848;
-    color.x = (f32(x_267) + x_270);
-    let x_484 : vec3<f32> = vec3<f32>(x_454.y, x_450.x, x_454.y);
-    let x_849 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_849;
-  }
-  let x_850 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_850;
-  let x_485 : vec3<f32> = vec3<f32>(x_467.x, x_450.y, x_450.x);
-  let x_851 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_851;
-  let x_852 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_852;
-  let x_274 : f32 = uv.y;
-  let x_853 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_853;
-  if ((x_274 > 0.5f)) {
-    let x_854 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_854;
-    let x_486 : vec2<f32> = vec2<f32>(x_480.y, x_455.y);
-    let x_279 : ptr<private, i32> = &(obj.numbers[6u]);
-    let x_855 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_855;
-    let x_487 : vec2<f32> = vec2<f32>(x_449.z, x_449.y);
-    let x_856 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_856;
-    let x_280 : i32 = *(x_279);
-    let x_857 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_857;
-    let x_858 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_858;
-    let x_859 : i32 = *(x_253);
-    *(x_253) = 0i;
-    *(x_253) = x_859;
-    let x_488 : vec2<f32> = vec2<f32>(x_473.z, x_473.y);
-    let x_283 : f32 = color.y;
-    let x_860 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_860;
-    let x_861 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_861;
-    let x_489 : vec2<f32> = vec2<f32>(x_475.y, x_475.x);
-    let x_862 : i32 = *(x_279);
-    *(x_279) = 0i;
-    *(x_279) = x_862;
-    let x_863 : i32 = *(x_279);
-    *(x_279) = 0i;
-    *(x_279) = x_863;
-    let x_490 : vec2<f32> = vec2<f32>(x_480.z, x_480.z);
-    let x_864 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_864;
-    color.y = (f32(x_280) + x_283);
-    let x_865 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_865;
-    let x_491 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_454.x);
-    let x_866 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_866;
-  }
-  let x_492 : vec2<f32> = vec2<f32>(x_455.y, x_455.y);
-  let x_867 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_867;
-  let x_287 : f32 = uv.y;
-  let x_868 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_868;
-  let x_493 : vec2<f32> = vec2<f32>(x_475.x, x_475.y);
-  let x_869 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_869;
-  let x_870 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_870;
-  let x_494 : vec3<f32> = vec3<f32>(x_191.x, x_191.y, x_191.y);
-  let x_871 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_871;
-  if ((x_287 > 0.75f)) {
-    let x_872 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_872;
-    let x_873 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_873;
-    let x_495 : vec3<f32> = vec3<f32>(x_192.y, x_192.x, x_192.y);
-    let x_874 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_874;
-    let x_293 : i32 = obj.numbers[7i];
-    let x_875 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_875;
-    let x_496 : vec3<f32> = vec3<f32>(x_475.x, x_467.y, x_467.x);
-    let x_876 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_876;
-    let x_497 : vec2<f32> = vec2<f32>(x_477.x, x_461.y);
-    let x_877 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_877;
-    let x_878 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_878;
-    let x_498 : vec3<f32> = vec3<f32>(x_478.x, x_478.y, x_478.x);
-    let x_879 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_879;
-    let x_296 : f32 = color.z;
-    let x_880 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_880;
-    let x_499 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
-    let x_881 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_881;
-    let x_882 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_882;
-    let x_883 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_883;
-    let x_500 : vec3<f32> = vec3<f32>(x_499.y, x_499.y, x_494.z);
-    let x_884 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_884;
-    color.z = (f32(x_293) + x_296);
-    let x_885 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_885;
-    let x_501 : vec2<f32> = vec2<f32>(x_453.x, x_453.z);
-    let x_886 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_886;
-  }
-  let x_887 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_887;
-  let x_502 : vec2<f32> = vec2<f32>(x_451.y, x_192.y);
-  let x_888 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_888;
-  let x_300 : ptr<private, i32> = &(obj.numbers[8i]);
-  let x_301 : i32 = *(x_300);
-  let x_889 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_889;
-  let x_503 : vec2<f32> = vec2<f32>(x_185.x, x_451.z);
-  let x_890 : i32 = *(x_300);
-  *(x_300) = 0i;
-  *(x_300) = x_890;
-  let x_891 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_891;
-  let x_504 : vec2<f32> = vec2<f32>(x_453.y, vec2<f32>().x);
-  let x_892 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_892;
-  let x_505 : vec3<f32> = vec3<f32>(x_504.x, x_504.y, x_504.x);
-  let x_893 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_893;
-  let x_304 : f32 = color.z;
-  let x_894 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_894;
-  let x_506 : vec2<f32> = vec2<f32>(x_493.x, x_492.x);
-  let x_895 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_895;
-  let x_896 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_896;
-  let x_507 : vec2<f32> = vec2<f32>(x_461.x, x_447.x);
-  let x_897 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_897;
-  color.z = (x_304 + f32(x_301));
-  let x_898 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_898;
-  let x_899 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_899;
-  let x_508 : vec3<f32> = vec3<f32>(x_461.y, x_461.x, x_506.y);
-  let x_900 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_900;
-  let x_308 : f32 = uv.x;
-  let x_901 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_901;
-  let x_509 : vec3<f32> = vec3<f32>(x_503.y, x_503.x, x_448.z);
-  let x_902 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_902;
-  let x_310 : f32 = uv.y;
-  let x_903 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_903;
-  let x_904 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_904;
-  let x_510 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
-  let x_905 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_905;
-  let x_906 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_906;
-  let x_511 : vec2<f32> = vec2<f32>(x_485.z, x_485.y);
-  let x_907 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_907;
-  let x_908 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_908;
-  let x_512 : vec3<f32> = vec3<f32>(x_455.y, x_455.y, x_455.y);
-  let x_909 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_909;
-  if ((abs((x_308 - x_310)) < 0.25f)) {
-    let x_910 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_910;
-    let x_911 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_911;
-    let x_513 : vec3<f32> = vec3<f32>(x_505.z, x_505.x, x_448.x);
-    let x_912 : i32 = *(x_300);
-    *(x_300) = 0i;
-    *(x_300) = x_912;
-    let x_317 : i32 = obj.numbers[9u];
-    let x_514 : vec3<f32> = vec3<f32>(x_474.y, x_474.y, x_474.y);
-    let x_913 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_913;
-    let x_320 : f32 = color.x;
-    let x_914 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_914;
-    let x_515 : vec2<f32> = vec2<f32>(x_502.x, x_502.y);
-    let x_915 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_915;
-    let x_916 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_916;
-    let x_516 : vec2<f32> = vec2<f32>(x_452.x, x_452.x);
-    let x_917 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_917;
-    let x_918 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_918;
-    let x_517 : vec3<f32> = vec3<f32>(vec2<f32>().x, vec2<f32>().x, vec2<f32>().y);
-    color.x = (f32(x_317) + x_320);
-    let x_919 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_919;
-    let x_518 : vec3<f32> = vec3<f32>(x_480.y, x_508.x, x_480.x);
-    let x_920 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_920;
-  }
-  let x_921 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_921;
-  let x_325 : vec3<f32> = color;
-  let x_922 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_922;
-  let x_519 : vec3<f32> = vec3<f32>(x_447.x, x_446.x, x_446.y);
-  let x_326 : vec3<f32> = normalize(x_325);
-  let x_923 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_923;
-  let x_924 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_924;
-  let x_925 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_925;
-  let x_926 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_926;
-  let x_520 : vec2<f32> = vec2<f32>(x_506.y, x_519.y);
-  let x_927 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_927;
-  let x_330 : vec4<f32> = vec4<f32>(x_326.x, x_326.y, x_326.z, 1.0f);
-  let x_928 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_928;
-  let x_521 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_520.y);
-  let x_929 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_929;
-  x_GLF_color = x_330;
-  let x_930 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_930;
-  let x_522 : vec3<f32> = vec3<f32>(x_330.w, x_330.y, x_493.x);
-  let x_931 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_931;
-  return;
-}
-
-struct main_out {
-  @location(0)
-  x_GLF_color_1 : vec4<f32>,
-}
-
-@fragment
-fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
-  gl_FragCoord = gl_FragCoord_param;
-  main_1();
-  return main_out(x_GLF_color);
-}
-
-error: function-scope 'var' must have a constructible type
diff --git a/test/tint/bug/tint/749.spvasm.expected.fxc.hlsl b/test/tint/bug/tint/749.spvasm.expected.fxc.hlsl
index 2c170a6..49ff2dd 100644
--- a/test/tint/bug/tint/749.spvasm.expected.fxc.hlsl
+++ b/test/tint/bug/tint/749.spvasm.expected.fxc.hlsl
@@ -1,1495 +1,7 @@
 SKIP: FAILED
 
+error: line:256: ID '172' decorated with NoContraction multiple times is not allowed.
+  %172 = OpIMul %int %168 %171
 
-struct QuicksortObject {
-  numbers : array<i32, 10u>,
-}
 
-struct buf0 {
-  /* @offset(0) */
-  resolution : vec2<f32>,
-}
 
-var<private> obj : QuicksortObject;
-
-var<private> gl_FragCoord : vec4<f32>;
-
-@group(0) @binding(0) var<uniform> x_188 : buf0;
-
-var<private> x_GLF_color : vec4<f32>;
-
-fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
-  var temp : i32;
-  let x_932 : i32 = temp;
-  temp = 0i;
-  temp = x_932;
-  let x_523 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-  let x_933 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_933;
-  let x_28 : i32 = *(i);
-  let x_934 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_934;
-  let x_524 : vec3<f32> = vec3<f32>(x_523.y, x_523.x, x_523.y);
-  let x_935 : i32 = temp;
-  temp = 0i;
-  temp = x_935;
-  let x_30 : ptr<private, i32> = &(obj.numbers[x_28]);
-  let x_936 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_936;
-  let x_31 : i32 = *(x_30);
-  let x_937 : i32 = temp;
-  temp = 0i;
-  temp = x_937;
-  temp = x_31;
-  let x_938 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_938;
-  let x_525 : vec3<f32> = vec3<f32>(x_523.z, vec3<f32>(1.0f, 2.0f, 3.0f).x, x_523.y);
-  let x_939 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_939;
-  let x_32 : i32 = *(i);
-  let x_940 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_940;
-  let x_33 : i32 = *(j);
-  let x_941 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_941;
-  let x_526 : vec3<f32> = vec3<f32>(x_525.x, x_525.z, x_525.z);
-  let x_942 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_942;
-  let x_34 : ptr<private, i32> = &(obj.numbers[x_33]);
-  let x_35 : i32 = *(x_34);
-  let x_943 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_943;
-  let x_527 : vec2<f32> = vec2<f32>(x_526.x, x_526.x);
-  let x_36 : ptr<private, i32> = &(obj.numbers[x_32]);
-  let x_528 : vec3<f32> = vec3<f32>(x_524.x, x_524.z, x_524.x);
-  *(x_36) = x_35;
-  let x_944 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_944;
-  let x_529 : vec3<f32> = vec3<f32>(x_526.y, x_526.z, x_526.x);
-  let x_945 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_945;
-  let x_37 : i32 = *(j);
-  let x_946 : i32 = temp;
-  temp = 0i;
-  temp = x_946;
-  let x_530 : vec2<f32> = vec2<f32>(x_529.z, x_529.y);
-  let x_947 : i32 = *(x_34);
-  *(x_34) = 0i;
-  *(x_34) = x_947;
-  let x_38 : i32 = temp;
-  let x_948 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_948;
-  let x_531 : vec3<f32> = vec3<f32>(x_527.x, x_526.y, x_526.x);
-  let x_949 : i32 = *(x_36);
-  *(x_36) = 0i;
-  *(x_36) = x_949;
-  let x_950 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_950;
-  let x_532 : vec3<f32> = vec3<f32>(x_528.x, x_528.y, x_528.x);
-  let x_951 : i32 = *(x_34);
-  *(x_34) = 0i;
-  *(x_34) = x_951;
-  obj.numbers[x_37] = x_38;
-  return;
-}
-
-fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
-  var param_3 : i32;
-  var i_1 : i32;
-  var j_1 : i32;
-  var param_2 : i32;
-  var param_1 : i32;
-  var param : i32;
-  var pivot : i32;
-  var x_537 : vec2<f32>;
-  var x_538 : vec3<f32>;
-  let x_952 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_952;
-  let x_41 : i32 = *(h);
-  let x_953 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_953;
-  let x_42 : ptr<private, i32> = &(obj.numbers[x_41]);
-  let x_954 : i32 = *(x_42);
-  *(x_42) = 0i;
-  *(x_42) = x_954;
-  let x_43 : i32 = *(x_42);
-  let x_955 : i32 = param_3;
-  param_3 = 0i;
-  param_3 = x_955;
-  let x_534 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-  let x_956 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_956;
-  pivot = x_43;
-  let x_45 : i32 = *(l);
-  let x_957 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_957;
-  let x_958 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_958;
-  let x_535 : vec3<f32> = vec3<f32>(x_534.y, x_534.z, x_534.y);
-  let x_959 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_959;
-  i_1 = (x_45 - bitcast<i32>(1u));
-  let x_49 : i32 = *(l);
-  let x_536 : vec3<f32> = vec3<f32>(x_534.x, x_534.z, x_535.x);
-  j_1 = 10i;
-  let x_960 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_960;
-  loop {
-    var x_61 : ptr<private, i32>;
-    var x_539 : vec3<f32>;
-    var x_541 : vec3<f32>;
-    let x_961 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_961;
-    let x_962 : i32 = param_1;
-    param_1 = 0i;
-    param_1 = x_962;
-    let x_55 : i32 = j_1;
-    let x_963 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_963;
-    x_537 = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-    let x_964 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_964;
-    let x_56 : i32 = *(h);
-    let x_965 : i32 = *(h);
-    *(h) = 0i;
-    *(h) = x_965;
-    let x_966 : i32 = param;
-    param = 0i;
-    param = x_966;
-    let x_967 : i32 = j_1;
-    j_1 = 0i;
-    j_1 = x_967;
-    x_538 = vec3<f32>(x_534.x, x_537.y, x_534.z);
-    let x_968 : i32 = param;
-    param = 0i;
-    param = x_968;
-    if ((x_55 <= (x_56 - bitcast<i32>(1u)))) {
-    } else {
-      break;
-    }
-    let x_60 : i32 = j_1;
-    let x_969 : i32 = *(x_42);
-    *(x_42) = 0i;
-    *(x_42) = x_969;
-    x_61 = obj.numbers[x_60];
-    let x_970 : i32 = *(h);
-    *(h) = 0i;
-    *(h) = x_970;
-    x_539 = vec3<f32>(x_537.x, x_535.z, x_537.x);
-    let x_971 : i32 = param_1;
-    param_1 = 0i;
-    param_1 = x_971;
-    let x_62 : ptr<undefined, i32> = x_61;
-    let x_972 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_972;
-    let x_63 : i32 = pivot;
-    let x_540 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_534.z);
-    let x_973 : i32 = i_1;
-    i_1 = 0i;
-    i_1 = x_973;
-    let x_974 : i32 = *(l);
-    *(l) = 0i;
-    *(l) = x_974;
-    x_541 = vec3<f32>(x_534.y, x_534.x, x_534.y);
-    let x_975 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_975;
-    if ((x_62 <= x_63)) {
-      let x_542 : vec3<f32> = vec3<f32>(x_541.z, x_541.x, x_541.x);
-      let x_976 : i32 = param_3;
-      param_3 = 0i;
-      param_3 = x_976;
-      let x_67 : i32 = i_1;
-      let x_977 : i32 = pivot;
-      pivot = 0i;
-      pivot = x_977;
-      let x_543 : vec2<f32> = vec2<f32>(x_539.x, x_541.y);
-      let x_978 : i32 = i_1;
-      i_1 = 0i;
-      i_1 = x_978;
-      let x_979 : i32 = param;
-      param = 0i;
-      param = x_979;
-      i_1 = (x_67 + bitcast<i32>(1u));
-      let x_980 : i32 = *(l);
-      *(l) = 0i;
-      *(l) = x_980;
-      let x_544 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_540.x);
-      let x_70 : i32 = i_1;
-      let x_545 : vec2<f32> = vec2<f32>(x_537.y, x_538.x);
-      let x_981 : i32 = param;
-      param = 0i;
-      param = x_981;
-      param = x_70;
-      let x_982 : i32 = param;
-      param = 0i;
-      param = x_982;
-      let x_546 : vec2<f32> = vec2<f32>(x_545.x, x_545.x);
-      let x_983 : i32 = i_1;
-      i_1 = 0i;
-      i_1 = x_983;
-      let x_72 : i32 = j_1;
-      param_1 = x_72;
-      let x_984 : i32 = param_3;
-      param_3 = 0i;
-      param_3 = x_984;
-      swap_i1_i1_(&(param), &(param_1));
-      let x_985 : i32 = param_1;
-      param_1 = 0i;
-      param_1 = x_985;
-    }
-    let x_986 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_986;
-
-    continuing {
-      let x_987 : i32 = *(h);
-      *(h) = 0i;
-      *(h) = x_987;
-      let x_74 : i32 = j_1;
-      let x_988 : i32 = *(h);
-      *(h) = 0i;
-      *(h) = x_988;
-      let x_547 : vec3<f32> = vec3<f32>(x_539.x, x_541.z, x_541.z);
-      let x_989 : ptr<undefined, i32> = x_61;
-      x_61 = 0i;
-      x_61 = x_989;
-      let x_990 : i32 = param;
-      param = 0i;
-      param = x_990;
-      j_1 = (1i + x_74);
-      let x_991 : i32 = param_1;
-      param_1 = 0i;
-      param_1 = x_991;
-      let x_548 : vec3<f32> = vec3<f32>(x_541.y, x_541.z, x_541.x);
-      let x_992 : ptr<undefined, i32> = x_61;
-      x_61 = 0i;
-      x_61 = x_992;
-    }
-  }
-  let x_76 : i32 = i_1;
-  let x_993 : i32 = *(x_42);
-  *(x_42) = 0i;
-  *(x_42) = x_993;
-  let x_549 : vec2<f32> = vec2<f32>(x_534.x, x_534.y);
-  let x_994 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_994;
-  let x_995 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_995;
-  i_1 = (1i + x_76);
-  let x_996 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_996;
-  let x_79 : i32 = i_1;
-  let x_997 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_997;
-  let x_550 : vec2<f32> = vec2<f32>(x_534.x, x_534.x);
-  let x_998 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_998;
-  param_2 = x_79;
-  let x_551 : vec2<f32> = vec2<f32>(x_534.y, x_536.x);
-  let x_999 : i32 = pivot;
-  pivot = 0i;
-  pivot = x_999;
-  let x_81 : i32 = *(h);
-  let x_552 : vec2<f32> = vec2<f32>(x_550.x, x_549.y);
-  let x_1000 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_1000;
-  param_3 = x_81;
-  let x_1001 : i32 = i_1;
-  i_1 = 0i;
-  i_1 = x_1001;
-  let x_553 : vec2<f32> = vec2<f32>(x_549.y, x_552.x);
-  let x_1002 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_1002;
-  swap_i1_i1_(&(param_2), &(param_3));
-  let x_1003 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_1003;
-  let x_554 : vec2<f32> = vec2<f32>(x_536.z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1004 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_1004;
-  let x_83 : i32 = i_1;
-  let x_1005 : i32 = param;
-  param = 0i;
-  param = x_1005;
-  let x_555 : vec2<f32> = vec2<f32>(x_534.y, x_534.x);
-  let x_1006 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_1006;
-  return x_83;
-}
-
-fn quicksort_() {
-  var param_4 : i32;
-  var h_1 : i32;
-  var p : i32;
-  var l_1 : i32;
-  var top : i32;
-  var stack : array<i32, 10u>;
-  var param_5 : i32;
-  l_1 = 0i;
-  let x_1007 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1007;
-  h_1 = 9i;
-  let x_1008 : array<i32, 10u> = stack;
-  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-  stack = x_1008;
-  let x_556 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1009 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1009;
-  top = -1i;
-  let x_1010 : i32 = p;
-  p = 0i;
-  p = x_1010;
-  let x_93 : i32 = top;
-  let x_557 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
-  let x_1011 : i32 = p;
-  p = 0i;
-  p = x_1011;
-  let x_94 : i32 = (x_93 + bitcast<i32>(1u));
-  let x_1012 : i32 = top;
-  top = 0i;
-  top = x_1012;
-  let x_558 : vec2<f32> = vec2<f32>(x_556.y, x_557.y);
-  let x_1013 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1013;
-  top = x_94;
-  let x_1014 : i32 = h_1;
-  h_1 = 0i;
-  h_1 = x_1014;
-  let x_559 : vec3<f32> = vec3<f32>(x_557.y, x_557.x, x_557.x);
-  let x_1015 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1015;
-  let x_95 : i32 = l_1;
-  let x_1016 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_1016;
-  let x_560 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_557.x);
-  let x_96 : ptr<function, i32> = &(stack[x_94]);
-  let x_1017 : array<i32, 10u> = stack;
-  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-  stack = x_1017;
-  let x_561 : vec3<f32> = vec3<f32>(x_556.y, x_556.y, x_556.y);
-  let x_1018 : i32 = l_1;
-  l_1 = 0i;
-  l_1 = 0i;
-  *(x_96) = x_95;
-  let x_1019 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1019;
-  let x_97 : i32 = top;
-  let x_1020 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1020;
-  let x_562 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, x_558.y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1021 : i32 = *(x_96);
-  *(x_96) = 0i;
-  *(x_96) = x_1021;
-  let x_98 : i32 = (x_97 + 1i);
-  let x_1022 : i32 = *(x_96);
-  *(x_96) = 0i;
-  *(x_96) = x_1022;
-  let x_563 : vec3<f32> = vec3<f32>(x_559.x, x_559.z, x_556.y);
-  top = x_98;
-  let x_1023 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1023;
-  let x_99 : i32 = h_1;
-  let x_1024 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1024;
-  let x_564 : vec3<f32> = vec3<f32>(x_558.x, x_561.x, x_558.y);
-  let x_1025 : i32 = l_1;
-  l_1 = 0i;
-  l_1 = x_1025;
-  let x_100 : ptr<function, i32> = &(stack[x_98]);
-  let x_1026 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1026;
-  let x_565 : vec2<f32> = vec2<f32>(x_564.z, x_564.z);
-  let x_1027 : i32 = p;
-  p = 0i;
-  p = x_1027;
-  *(x_100) = x_99;
-  loop {
-    let x_566 : vec3<f32> = vec3<f32>(x_563.x, x_563.x, x_563.x);
-    let x_1028 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1028;
-    let x_1029 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1029;
-    let x_106 : i32 = top;
-    let x_1030 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1030;
-    let x_567 : vec2<f32> = vec2<f32>(x_558.x, x_564.z);
-    let x_1031 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1031;
-    if ((x_106 >= bitcast<i32>(0u))) {
-    } else {
-      break;
-    }
-    let x_1032 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_1032;
-    let x_568 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_563.y);
-    let x_1033 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1033;
-    let x_108 : i32 = top;
-    let x_569 : vec3<f32> = vec3<f32>(x_565.x, x_567.y, x_565.x);
-    let x_1034 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1034;
-    let x_570 : vec2<f32> = vec2<f32>(x_556.x, x_556.x);
-    let x_1035 : i32 = p;
-    p = 0i;
-    p = x_1035;
-    top = (x_108 - bitcast<i32>(1u));
-    let x_1036 : i32 = p;
-    p = 0i;
-    p = x_1036;
-    let x_110 : ptr<function, i32> = &(stack[x_108]);
-    let x_1037 : i32 = *(x_96);
-    *(x_96) = 0i;
-    *(x_96) = x_1037;
-    let x_111 : i32 = *(x_110);
-    let x_1038 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1038;
-    let x_571 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_564.y);
-    let x_1039 : i32 = l_1;
-    l_1 = 0i;
-    l_1 = x_1039;
-    h_1 = x_111;
-    let x_1040 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1040;
-    let x_572 : vec2<f32> = vec2<f32>(x_562.y, x_561.y);
-    let x_1041 : i32 = p;
-    p = 0i;
-    p = x_1041;
-    let x_112 : i32 = top;
-    let x_1042 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1042;
-    let x_1043 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1043;
-    let x_573 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-    top = (x_112 - 1i);
-    let x_1044 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1044;
-    let x_574 : vec3<f32> = vec3<f32>(x_570.y, x_565.x, x_570.y);
-    let x_1045 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1045;
-    let x_114 : ptr<function, i32> = &(stack[x_112]);
-    let x_575 : vec2<f32> = vec2<f32>(x_564.y, x_564.z);
-    let x_1046 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1046;
-    let x_115 : i32 = *(x_114);
-    let x_1047 : i32 = p;
-    p = 0i;
-    p = x_1047;
-    let x_576 : vec3<f32> = vec3<f32>(x_573.y, x_573.y, x_565.x);
-    let x_1048 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1048;
-    l_1 = x_115;
-    let x_1049 : i32 = top;
-    top = 0i;
-    top = x_1049;
-    let x_118 : i32 = l_1;
-    param_4 = x_118;
-    let x_1050 : i32 = *(x_110);
-    *(x_110) = 0i;
-    *(x_110) = x_1050;
-    let x_577 : vec2<f32> = vec2<f32>(x_569.y, x_569.z);
-    let x_120 : i32 = h_1;
-    let x_578 : vec2<f32> = vec2<f32>(x_558.x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-    param_5 = x_120;
-    let x_1051 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1051;
-    let x_121 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
-    let x_579 : vec2<f32> = vec2<f32>(x_567.x, x_568.x);
-    let x_1052 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1052;
-    p = x_121;
-    let x_1053 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1053;
-    let x_122 : i32 = p;
-    let x_1054 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1054;
-    let x_580 : vec2<f32> = vec2<f32>(x_568.y, x_568.y);
-    let x_1055 : i32 = l_1;
-    l_1 = 0i;
-    l_1 = x_1055;
-    let x_1056 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1056;
-    let x_124 : i32 = l_1;
-    let x_1057 : i32 = *(x_110);
-    *(x_110) = 0i;
-    *(x_110) = x_1057;
-    let x_1058 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1058;
-    let x_582 : vec2<f32> = vec2<f32>(x_567.y, x_573.x);
-    let x_1059 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1059;
-    if (((x_122 - bitcast<i32>(1u)) > x_124)) {
-      let x_1060 : i32 = param_4;
-      param_4 = 0i;
-      param_4 = x_1060;
-      let x_128 : i32 = top;
-      let x_583 : vec2<f32> = vec2<f32>(x_571.y, x_556.y);
-      let x_1061 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1061;
-      let x_1062 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1062;
-      let x_584 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_585 : vec3<f32> = vec3<f32>(x_580.y, x_577.x, x_577.x);
-      let x_130 : i32 = l_1;
-      let x_1063 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1063;
-      let x_586 : vec2<f32> = vec2<f32>(x_564.x, x_585.x);
-      let x_1064 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1064;
-      let x_131 : ptr<function, i32> = &(stack[(1i + x_128)]);
-      let x_1065 : i32 = *(x_110);
-      *(x_110) = 0i;
-      *(x_110) = x_1065;
-      let x_587 : vec3<f32> = vec3<f32>(x_566.y, x_566.y, x_563.x);
-      let x_1066 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1066;
-      *(x_131) = x_130;
-      let x_132 : i32 = top;
-      let x_1067 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1067;
-      let x_588 : vec2<f32> = vec2<f32>(x_575.y, x_575.x);
-      let x_1068 : i32 = *(x_131);
-      *(x_131) = 0i;
-      *(x_131) = x_1068;
-      let x_133 : i32 = bitcast<i32>((1u + bitcast<u32>(x_132)));
-      let x_1069 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1069;
-      let x_589 : vec3<f32> = vec3<f32>(x_576.z, x_588.y, x_576.z);
-      let x_1070 : i32 = h_1;
-      h_1 = 0i;
-      h_1 = x_1070;
-      top = x_133;
-      let x_1071 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1071;
-      let x_134 : i32 = p;
-      let x_590 : vec2<f32> = vec2<f32>(x_576.x, x_573.y);
-      let x_1072 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1072;
-      let x_136 : ptr<function, i32> = &(stack[x_133]);
-      let x_1073 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1073;
-      *(x_136) = (x_134 - bitcast<i32>(1u));
-      let x_1074 : i32 = *(x_96);
-      *(x_96) = 0i;
-      *(x_96) = x_1074;
-      let x_591 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_1075 : i32 = *(x_136);
-      *(x_136) = 0i;
-      *(x_136) = x_1075;
-    }
-    let x_1076 : i32 = *(x_96);
-    *(x_96) = 0i;
-    *(x_96) = x_1076;
-    let x_592 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-    let x_1077 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_1077;
-    let x_137 : i32 = p;
-    let x_1078 : i32 = *(x_114);
-    *(x_114) = 0i;
-    *(x_114) = x_1078;
-    let x_593 : vec3<f32> = vec3<f32>(x_571.z, x_556.x, x_556.y);
-    let x_1079 : i32 = p;
-    p = 0i;
-    p = x_1079;
-    let x_594 : vec3<f32> = vec3<f32>(x_563.z, x_563.x, x_575.x);
-    let x_1080 : i32 = *(x_114);
-    *(x_114) = 0i;
-    *(x_114) = x_1080;
-    let x_139 : i32 = h_1;
-    let x_1081 : i32 = top;
-    top = 0i;
-    top = x_1081;
-    let x_595 : vec3<f32> = vec3<f32>(x_560.z, x_568.x, x_560.x);
-    let x_1082 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1082;
-    let x_1083 : i32 = p;
-    p = 0i;
-    p = x_1083;
-    if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
-      let x_1084 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1084;
-      let x_596 : vec2<f32> = vec2<f32>(x_592.y, x_582.x);
-      let x_1085 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1085;
-      let x_143 : i32 = top;
-      let x_1086 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1086;
-      let x_597 : vec3<f32> = vec3<f32>(x_562.y, x_560.y, x_560.y);
-      let x_144 : i32 = (x_143 + 1i);
-      let x_1087 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1087;
-      top = x_144;
-      let x_1088 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1088;
-      let x_145 : i32 = p;
-      let x_1089 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1089;
-      let x_599 : vec3<f32> = vec3<f32>(x_560.z, x_560.x, x_568.x);
-      let x_1090 : i32 = p;
-      p = 0i;
-      p = x_1090;
-      let x_600 : vec3<f32> = vec3<f32>(x_556.x, x_580.x, x_580.x);
-      let x_1091 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1091;
-      let x_147 : ptr<function, i32> = &(stack[x_144]);
-      let x_1092 : i32 = *(x_110);
-      *(x_110) = 0i;
-      *(x_110) = x_1092;
-      let x_601 : vec2<f32> = vec2<f32>(x_563.x, x_563.y);
-      *(x_147) = bitcast<i32>((1u + bitcast<u32>(x_145)));
-      let x_1093 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1093;
-      let x_148 : i32 = top;
-      let x_1094 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1094;
-      let x_602 : vec2<f32> = vec2<f32>(x_565.y, x_599.y);
-      let x_1095 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1095;
-      let x_149 : i32 = (x_148 + bitcast<i32>(1u));
-      let x_1096 : i32 = *(x_147);
-      *(x_147) = 0i;
-      *(x_147) = x_1096;
-      top = x_149;
-      let x_1097 : i32 = param_4;
-      param_4 = 0i;
-      param_4 = x_1097;
-      let x_150 : i32 = h_1;
-      let x_1098 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1098;
-      let x_1099 : i32 = *(x_96);
-      *(x_96) = 0i;
-      *(x_96) = x_1099;
-      stack[x_149] = x_150;
-      let x_1100 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1100;
-      let x_603 : vec3<f32> = vec3<f32>(x_568.y, x_564.x, x_564.x);
-      let x_1101 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1101;
-    }
-    let x_1102 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1102;
-
-    continuing {
-      let x_1103 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1103;
-      let x_604 : vec2<f32> = vec2<f32>(x_563.z, x_564.x);
-      let x_1104 : QuicksortObject = obj;
-      obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-      obj = x_1104;
-    }
-  }
-  let x_1105 : i32 = h_1;
-  h_1 = 0i;
-  h_1 = x_1105;
-  return;
-}
-
-fn main_1() {
-  var color : vec3<f32>;
-  var i_2 : i32;
-  var uv : vec2<f32>;
-  let x_717 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_717;
-  i_2 = 0i;
-  let x_721 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_721;
-  if (true) {
-    let x_722 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_722;
-    let x_431 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
-    let x_158 : i32 = i_2;
-    let x_723 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_723;
-    let x_725 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_725;
-    let x_432 : vec2<f32> = vec2<f32>(x_431.y, x_431.y);
-    let x_726 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_726;
-  }
-  let x_756 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_756;
-  let x_446 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().x);
-  let x_757 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_757;
-  quicksort_();
-  let x_758 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_758;
-  let x_184 : vec4<f32> = gl_FragCoord;
-  let x_759 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_759;
-  let x_447 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
-  let x_760 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_760;
-  let x_185 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
-  let x_448 : vec3<f32> = vec3<f32>(x_185.y, x_446.y, x_446.y);
-  let x_761 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_761;
-  let x_762 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_762;
-  let x_191 : vec2<f32> = x_188.resolution;
-  let x_763 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_763;
-  let x_449 : vec3<f32> = vec3<f32>(x_184.y, vec3<f32>(1.0f, 2.0f, 3.0f).z, x_184.w);
-  let x_764 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_764;
-  let x_192 : vec2<f32> = (x_185 / x_191);
-  let x_765 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_765;
-  let x_450 : vec2<f32> = vec2<f32>(x_447.x, x_185.y);
-  let x_766 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  let x_767 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_767;
-  color = x_766;
-  uv = x_192;
-  color = vec3<f32>(1.0f, 2.0f, 3.0f);
-  let x_768 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_768;
-  let x_451 : vec3<f32> = vec3<f32>(x_185.x, x_185.y, x_446.y);
-  let x_769 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_769;
-  let x_200 : ptr<private, i32> = &(obj.numbers[0u]);
-  let x_770 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_770;
-  let x_201 : i32 = *(x_200);
-  let x_771 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_771;
-  let x_772 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_772;
-  let x_206 : f32 = color.x;
-  let x_773 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_773;
-  let x_452 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_774 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_774;
-  let x_775 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_775;
-  let x_453 : vec3<f32> = vec3<f32>(x_451.x, x_450.x, x_450.y);
-  color.x = (x_206 + f32(x_201));
-  let x_776 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_776;
-  let x_777 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_777;
-  let x_454 : vec2<f32> = vec2<f32>(x_184.y, x_184.y);
-  let x_210 : f32 = uv.x;
-  let x_455 : vec2<f32> = vec2<f32>(x_192.y, x_192.x);
-  let x_778 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_778;
-  let x_779 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_779;
-  if ((x_210 > 0.25f)) {
-    let x_780 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_780;
-    let x_781 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_781;
-    let x_456 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_448.y, x_448.y);
-    let x_782 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_782;
-    let x_216 : i32 = obj.numbers[1i];
-    let x_783 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_783;
-    let x_457 : vec2<f32> = vec2<f32>(x_454.x, x_454.x);
-    let x_784 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_784;
-    let x_785 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_785;
-    let x_458 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec2<f32>().y);
-    let x_786 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_786;
-    let x_219 : f32 = color[0i];
-    let x_787 : f32 = color[0i];
-    color[0i] = 0.0f;
-    color[0i] = x_787;
-    let x_788 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_788;
-    let x_789 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_789;
-    let x_459 : vec3<f32> = vec3<f32>(x_454.y, x_454.y, x_447.y);
-    let x_790 : f32 = color[0i];
-    color[0i] = 0.0f;
-    color[0i] = x_790;
-    color.x = (f32(x_216) + x_219);
-    let x_791 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_791;
-  }
-  let x_792 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_792;
-  let x_793 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_793;
-  let x_223 : f32 = uv.x;
-  let x_794 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_794;
-  let x_460 : vec3<f32> = vec3<f32>(x_453.z, x_453.y, x_453.y);
-  let x_795 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_795;
-  let x_796 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_796;
-  let x_461 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
-  let x_797 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_797;
-  if ((x_223 > 0.5f)) {
-    let x_798 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_798;
-    let x_462 : vec2<f32> = vec2<f32>(x_446.x, x_446.x);
-    let x_799 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_799;
-    let x_229 : ptr<private, i32> = &(obj.numbers[2u]);
-    let x_800 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_800;
-    let x_463 : vec3<f32> = vec3<f32>(x_453.x, x_453.z, x_461.y);
-    let x_801 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_801;
-    let x_230 : i32 = *(x_229);
-    let x_802 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_802;
-    let x_803 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_803;
-    let x_804 : i32 = *(x_229);
-    *(x_229) = 0i;
-    *(x_229) = x_804;
-    let x_464 : vec2<f32> = vec2<f32>(x_450.y, x_191.x);
-    let x_805 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_805;
-    let x_234 : f32 = color.y;
-    let x_806 : i32 = *(x_229);
-    *(x_229) = 0i;
-    *(x_229) = x_806;
-    let x_465 : vec2<f32> = vec2<f32>(x_463.x, x_185.x);
-    let x_807 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_807;
-    let x_808 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_808;
-    let x_466 : vec2<f32> = vec2<f32>(x_455.y, vec2<f32>().y);
-    let x_809 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_809;
-    color.y = (f32(x_230) + x_234);
-    let x_810 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_810;
-  }
-  let x_811 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_811;
-  let x_467 : vec2<f32> = vec2<f32>(x_191.x, x_191.x);
-  let x_812 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_812;
-  let x_238 : f32 = uv[0i];
-  let x_813 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_813;
-  let x_814 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_814;
-  if ((x_238 > 0.75f)) {
-    let x_815 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_815;
-    let x_245 : i32 = obj.numbers[3i];
-    let x_816 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_816;
-    let x_817 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_817;
-    let x_468 : vec3<f32> = vec3<f32>(x_467.x, x_467.x, x_467.x);
-    let x_818 : f32 = uv[0i];
-    uv[0i] = 0.0f;
-    uv[0i] = x_818;
-    let x_819 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_819;
-    let x_249 : f32 = color.z;
-    let x_820 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_820;
-    let x_469 : vec3<f32> = vec3<f32>(x_467.x, x_191.y, x_467.y);
-    let x_821 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_821;
-    let x_822 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_822;
-    let x_470 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().y);
-    let x_823 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_823;
-    color.z = (x_249 + f32(x_245));
-    let x_824 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_824;
-    let x_471 : vec2<f32> = vec2<f32>(x_470.y, x_470.y);
-  }
-  let x_825 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_825;
-  let x_472 : vec3<f32> = vec3<f32>(x_454.x, x_454.y, x_454.y);
-  let x_253 : ptr<private, i32> = &(obj.numbers[4i]);
-  let x_254 : i32 = *(x_253);
-  let x_826 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_826;
-  let x_827 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_827;
-  let x_473 : vec3<f32> = vec3<f32>(x_446.y, x_453.x, x_453.x);
-  let x_828 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_828;
-  let x_474 : vec2<f32> = vec2<f32>(x_191.x, x_184.z);
-  let x_829 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_829;
-  let x_257 : f32 = color.y;
-  let x_830 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_830;
-  let x_475 : vec2<f32> = vec2<f32>(x_467.x, x_450.x);
-  let x_831 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_831;
-  let x_832 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_832;
-  let x_476 : vec2<f32> = vec2<f32>(x_451.z, x_460.y);
-  color.y = (x_257 + f32(x_254));
-  let x_477 : vec3<f32> = vec3<f32>(vec2<f32>().x, x_472.x, vec2<f32>().y);
-  let x_833 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_833;
-  let x_834 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_834;
-  let x_478 : vec2<f32> = vec2<f32>(x_472.x, x_472.y);
-  let x_835 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_835;
-  let x_261 : f32 = uv.y;
-  let x_836 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_836;
-  let x_479 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_454.y, vec2<f32>().x);
-  let x_837 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_837;
-  let x_838 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_838;
-  let x_480 : vec3<f32> = vec3<f32>(x_446.x, x_446.x, vec2<f32>().y);
-  let x_839 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_839;
-  if ((x_261 > 0.25f)) {
-    let x_481 : vec2<f32> = vec2<f32>(x_447.x, x_480.z);
-    let x_840 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_840;
-    let x_267 : i32 = obj.numbers[5u];
-    let x_841 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_841;
-    let x_842 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_842;
-    let x_843 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_843;
-    let x_270 : f32 = color.x;
-    let x_844 : f32 = uv[0i];
-    uv[0i] = 0.0f;
-    uv[0i] = x_844;
-    let x_482 : vec3<f32> = vec3<f32>(x_455.x, x_475.y, x_455.y);
-    let x_845 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_845;
-    let x_846 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_846;
-    let x_847 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_847;
-    let x_483 : vec3<f32> = vec3<f32>(x_184.w, x_184.w, x_192.x);
-    let x_848 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_848;
-    color.x = (f32(x_267) + x_270);
-    let x_484 : vec3<f32> = vec3<f32>(x_454.y, x_450.x, x_454.y);
-    let x_849 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_849;
-  }
-  let x_850 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_850;
-  let x_485 : vec3<f32> = vec3<f32>(x_467.x, x_450.y, x_450.x);
-  let x_851 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_851;
-  let x_852 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_852;
-  let x_274 : f32 = uv.y;
-  let x_853 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_853;
-  if ((x_274 > 0.5f)) {
-    let x_854 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_854;
-    let x_486 : vec2<f32> = vec2<f32>(x_480.y, x_455.y);
-    let x_279 : ptr<private, i32> = &(obj.numbers[6u]);
-    let x_855 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_855;
-    let x_487 : vec2<f32> = vec2<f32>(x_449.z, x_449.y);
-    let x_856 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_856;
-    let x_280 : i32 = *(x_279);
-    let x_857 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_857;
-    let x_858 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_858;
-    let x_859 : i32 = *(x_253);
-    *(x_253) = 0i;
-    *(x_253) = x_859;
-    let x_488 : vec2<f32> = vec2<f32>(x_473.z, x_473.y);
-    let x_283 : f32 = color.y;
-    let x_860 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_860;
-    let x_861 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_861;
-    let x_489 : vec2<f32> = vec2<f32>(x_475.y, x_475.x);
-    let x_862 : i32 = *(x_279);
-    *(x_279) = 0i;
-    *(x_279) = x_862;
-    let x_863 : i32 = *(x_279);
-    *(x_279) = 0i;
-    *(x_279) = x_863;
-    let x_490 : vec2<f32> = vec2<f32>(x_480.z, x_480.z);
-    let x_864 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_864;
-    color.y = (f32(x_280) + x_283);
-    let x_865 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_865;
-    let x_491 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_454.x);
-    let x_866 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_866;
-  }
-  let x_492 : vec2<f32> = vec2<f32>(x_455.y, x_455.y);
-  let x_867 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_867;
-  let x_287 : f32 = uv.y;
-  let x_868 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_868;
-  let x_493 : vec2<f32> = vec2<f32>(x_475.x, x_475.y);
-  let x_869 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_869;
-  let x_870 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_870;
-  let x_494 : vec3<f32> = vec3<f32>(x_191.x, x_191.y, x_191.y);
-  let x_871 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_871;
-  if ((x_287 > 0.75f)) {
-    let x_872 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_872;
-    let x_873 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_873;
-    let x_495 : vec3<f32> = vec3<f32>(x_192.y, x_192.x, x_192.y);
-    let x_874 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_874;
-    let x_293 : i32 = obj.numbers[7i];
-    let x_875 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_875;
-    let x_496 : vec3<f32> = vec3<f32>(x_475.x, x_467.y, x_467.x);
-    let x_876 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_876;
-    let x_497 : vec2<f32> = vec2<f32>(x_477.x, x_461.y);
-    let x_877 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_877;
-    let x_878 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_878;
-    let x_498 : vec3<f32> = vec3<f32>(x_478.x, x_478.y, x_478.x);
-    let x_879 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_879;
-    let x_296 : f32 = color.z;
-    let x_880 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_880;
-    let x_499 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
-    let x_881 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_881;
-    let x_882 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_882;
-    let x_883 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_883;
-    let x_500 : vec3<f32> = vec3<f32>(x_499.y, x_499.y, x_494.z);
-    let x_884 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_884;
-    color.z = (f32(x_293) + x_296);
-    let x_885 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_885;
-    let x_501 : vec2<f32> = vec2<f32>(x_453.x, x_453.z);
-    let x_886 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_886;
-  }
-  let x_887 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_887;
-  let x_502 : vec2<f32> = vec2<f32>(x_451.y, x_192.y);
-  let x_888 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_888;
-  let x_300 : ptr<private, i32> = &(obj.numbers[8i]);
-  let x_301 : i32 = *(x_300);
-  let x_889 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_889;
-  let x_503 : vec2<f32> = vec2<f32>(x_185.x, x_451.z);
-  let x_890 : i32 = *(x_300);
-  *(x_300) = 0i;
-  *(x_300) = x_890;
-  let x_891 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_891;
-  let x_504 : vec2<f32> = vec2<f32>(x_453.y, vec2<f32>().x);
-  let x_892 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_892;
-  let x_505 : vec3<f32> = vec3<f32>(x_504.x, x_504.y, x_504.x);
-  let x_893 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_893;
-  let x_304 : f32 = color.z;
-  let x_894 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_894;
-  let x_506 : vec2<f32> = vec2<f32>(x_493.x, x_492.x);
-  let x_895 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_895;
-  let x_896 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_896;
-  let x_507 : vec2<f32> = vec2<f32>(x_461.x, x_447.x);
-  let x_897 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_897;
-  color.z = (x_304 + f32(x_301));
-  let x_898 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_898;
-  let x_899 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_899;
-  let x_508 : vec3<f32> = vec3<f32>(x_461.y, x_461.x, x_506.y);
-  let x_900 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_900;
-  let x_308 : f32 = uv.x;
-  let x_901 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_901;
-  let x_509 : vec3<f32> = vec3<f32>(x_503.y, x_503.x, x_448.z);
-  let x_902 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_902;
-  let x_310 : f32 = uv.y;
-  let x_903 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_903;
-  let x_904 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_904;
-  let x_510 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
-  let x_905 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_905;
-  let x_906 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_906;
-  let x_511 : vec2<f32> = vec2<f32>(x_485.z, x_485.y);
-  let x_907 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_907;
-  let x_908 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_908;
-  let x_512 : vec3<f32> = vec3<f32>(x_455.y, x_455.y, x_455.y);
-  let x_909 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_909;
-  if ((abs((x_308 - x_310)) < 0.25f)) {
-    let x_910 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_910;
-    let x_911 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_911;
-    let x_513 : vec3<f32> = vec3<f32>(x_505.z, x_505.x, x_448.x);
-    let x_912 : i32 = *(x_300);
-    *(x_300) = 0i;
-    *(x_300) = x_912;
-    let x_317 : i32 = obj.numbers[9u];
-    let x_514 : vec3<f32> = vec3<f32>(x_474.y, x_474.y, x_474.y);
-    let x_913 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_913;
-    let x_320 : f32 = color.x;
-    let x_914 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_914;
-    let x_515 : vec2<f32> = vec2<f32>(x_502.x, x_502.y);
-    let x_915 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_915;
-    let x_916 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_916;
-    let x_516 : vec2<f32> = vec2<f32>(x_452.x, x_452.x);
-    let x_917 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_917;
-    let x_918 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_918;
-    let x_517 : vec3<f32> = vec3<f32>(vec2<f32>().x, vec2<f32>().x, vec2<f32>().y);
-    color.x = (f32(x_317) + x_320);
-    let x_919 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_919;
-    let x_518 : vec3<f32> = vec3<f32>(x_480.y, x_508.x, x_480.x);
-    let x_920 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_920;
-  }
-  let x_921 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_921;
-  let x_325 : vec3<f32> = color;
-  let x_922 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_922;
-  let x_519 : vec3<f32> = vec3<f32>(x_447.x, x_446.x, x_446.y);
-  let x_326 : vec3<f32> = normalize(x_325);
-  let x_923 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_923;
-  let x_924 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_924;
-  let x_925 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_925;
-  let x_926 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_926;
-  let x_520 : vec2<f32> = vec2<f32>(x_506.y, x_519.y);
-  let x_927 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_927;
-  let x_330 : vec4<f32> = vec4<f32>(x_326.x, x_326.y, x_326.z, 1.0f);
-  let x_928 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_928;
-  let x_521 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_520.y);
-  let x_929 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_929;
-  x_GLF_color = x_330;
-  let x_930 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_930;
-  let x_522 : vec3<f32> = vec3<f32>(x_330.w, x_330.y, x_493.x);
-  let x_931 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_931;
-  return;
-}
-
-struct main_out {
-  @location(0)
-  x_GLF_color_1 : vec4<f32>,
-}
-
-@fragment
-fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
-  gl_FragCoord = gl_FragCoord_param;
-  main_1();
-  return main_out(x_GLF_color);
-}
-
-error: function-scope 'var' must have a constructible type
diff --git a/test/tint/bug/tint/980.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/980.wgsl.expected.ir.fxc.hlsl
index e79647c..fd82750 100644
--- a/test/tint/bug/tint/980.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/980.wgsl.expected.ir.fxc.hlsl
@@ -23,5 +23,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025D7FC7C9C0(9,3-15): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000259A3D6F8B0(9,3-15): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/bug/tint/998.wgsl.expected.ir.fxc.hlsl b/test/tint/bug/tint/998.wgsl.expected.ir.fxc.hlsl
index 3548c51..8910002 100644
--- a/test/tint/bug/tint/998.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/bug/tint/998.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002010DA390E0(13,3-25): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000028576EA4560(13,3-25): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.fxc.hlsl
index 27de1da..eb45ae4 100644
--- a/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/atomicStore/struct/via_ptr_let.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EB92CEDD10(24,3-34): error X3549: interlocked targets must be groupshared or UAV elements
+C:\src\dawn\Shader@0x00000274E7E060E0(24,3-34): error X3549: interlocked targets must be groupshared or UAV elements
 
diff --git a/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.fxc.hlsl
index 10e09e1..b768794 100644
--- a/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/frexp/scalar/mixed.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018E1A4A92C0(11,24-40): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x0000018E1A4A92C0(11,24-40): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x0000018E1A4A92C0(11,24-40): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x000001FDFD27A1A0(11,24-40): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001FDFD27A1A0(11,24-40): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001FDFD27A1A0(11,24-40): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.fxc.hlsl
index cfdfe7c..e757528 100644
--- a/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/frexp/scalar/runtime.wgsl.expected.ir.fxc.hlsl
@@ -17,7 +17,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DD08D4F130(10,24-41): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x000001DD08D4F130(10,24-41): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x000001DD08D4F130(10,24-41): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x000001EAD7A8F980(10,24-41): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001EAD7A8F980(10,24-41): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001EAD7A8F980(10,24-41): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.fxc.hlsl
index ea941c2..df2bc2a 100644
--- a/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/frexp/vector/mixed.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000228DFC805C0(11,29-45): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x00000228DFC805C0(11,29-45): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x00000228DFC805C0(11,29-45): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x0000019509848F10(11,29-45): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x0000019509848F10(11,29-45): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x0000019509848F10(11,29-45): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.fxc.hlsl
index 7d5885d..2dd6a55 100644
--- a/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/frexp/vector/runtime.wgsl.expected.ir.fxc.hlsl
@@ -17,7 +17,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D24A082DE0(10,29-46): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x000001D24A082DE0(10,29-46): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x000001D24A082DE0(10,29-46): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x0000027F6B32FC90(10,29-46): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x0000027F6B32FC90(10,29-46): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x0000027F6B32FC90(10,29-46): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.fxc.hlsl
index fe59c1e..4377761 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_421ca3() {
+vector<float16_t, 3> abs_421ca3() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_421ca3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_421ca3();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, abs_421ca3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_421ca3();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, abs_421ca3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_421ca3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A4CEDC64A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.fxc.hlsl
index a2fbe0d..47a2e53 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028FB566F9C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001553C4864C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.fxc.hlsl
index 0ceeaa7..205100e 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_538d29() {
+vector<float16_t, 4> abs_538d29() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_538d29();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_538d29();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, abs_538d29());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_538d29();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, abs_538d29());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_538d29();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021534C77F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.fxc.hlsl
index f5d6048..26e867a 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CF1DE102E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018104947670(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.fxc.hlsl
index 5d752b7..fdee92d 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_5ae4fe() {
+vector<float16_t, 2> abs_5ae4fe() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_5ae4fe();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_5ae4fe();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, abs_5ae4fe());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_5ae4fe();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, abs_5ae4fe());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_5ae4fe();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F72B19C180(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl
index 302b32a..4f7978e 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002400E25EB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014D8546B6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.fxc.hlsl
index 630f544..15a587e 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_fd247f() {
+float16_t abs_fd247f() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_fd247f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_fd247f();
+  prevent_dce.Store<float16_t>(0u, abs_fd247f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_fd247f();
+  prevent_dce.Store<float16_t>(0u, abs_fd247f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_fd247f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014FF2EE6C70(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.fxc.hlsl
index ca6a7d1..39960fd 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E91900DB30(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002360AD76220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.fxc.hlsl
index 203f8a6..7f2cc25 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_004aff() {
+vector<float16_t, 2> acos_004aff() {
   vector<float16_t, 2> res = (float16_t(0.25048828125h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_004aff();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_004aff();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acos_004aff());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_004aff();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acos_004aff());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_004aff();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001849ADFD4D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.fxc.hlsl
index 6408ffe..254a138 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021F4D6A5340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CEC7D55C80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.fxc.hlsl
index 310a82b..42dcbcc 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_203628() {
+vector<float16_t, 4> acos_203628() {
   vector<float16_t, 4> res = (float16_t(0.25048828125h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_203628();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_203628();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acos_203628());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_203628();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acos_203628());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_203628();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BBC4124CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.fxc.hlsl
index 05cf9cf..d74738d 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002F366AEF570(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000275411298D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.fxc.hlsl
index fec3a8c..9bb00c6 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_303e3d() {
+float16_t acos_303e3d() {
   float16_t res = float16_t(0.25048828125h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_303e3d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_303e3d();
+  prevent_dce.Store<float16_t>(0u, acos_303e3d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_303e3d();
+  prevent_dce.Store<float16_t>(0u, acos_303e3d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_303e3d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CD92D73CF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.fxc.hlsl
index e740b59..49abe61 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025DDFD6F280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002A3ACEEAD40(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.fxc.hlsl
index e9fe85c..2632296 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_f47057() {
+vector<float16_t, 3> acos_f47057() {
   vector<float16_t, 3> res = (float16_t(0.25048828125h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_f47057();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_f47057();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acos_f47057());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_f47057();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acos_f47057());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_f47057();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017771A64CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.fxc.hlsl
index fe43c85..7fb8aca 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028868EA9180(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DB953A6E40(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.fxc.hlsl
index 9f12e13..9544f5b 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_5f49d8() {
+vector<float16_t, 2> acosh_5f49d8() {
   vector<float16_t, 2> res = (float16_t(0.99951171875h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_5f49d8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_5f49d8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acosh_5f49d8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_5f49d8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acosh_5f49d8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_5f49d8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FA25B54670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl
index 1731245..d070a88 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BCFE36FF90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D223DE9030(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.fxc.hlsl
index d72fef1..8bc6829 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_a37dfe() {
+float16_t acosh_a37dfe() {
   float16_t res = float16_t(0.99951171875h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_a37dfe();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_a37dfe();
+  prevent_dce.Store<float16_t>(0u, acosh_a37dfe());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_a37dfe();
+  prevent_dce.Store<float16_t>(0u, acosh_a37dfe());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_a37dfe();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B6EAF14290(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl
index f9a8efb..a985a1c 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F2F3FCE2E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002E28C7E82C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.fxc.hlsl
index b45d0ca..08996b7 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_de60d8() {
+vector<float16_t, 4> acosh_de60d8() {
   vector<float16_t, 4> res = (float16_t(0.99951171875h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_de60d8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_de60d8();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acosh_de60d8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_de60d8();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acosh_de60d8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_de60d8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019D1F52C520(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.fxc.hlsl
index 162ab23..f6f2aaa 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002515F0FEF50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000235BC2038C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.fxc.hlsl
index e144fd3..bdfb69e 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_f56574() {
+vector<float16_t, 3> acosh_f56574() {
   vector<float16_t, 3> res = (float16_t(0.99951171875h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_f56574();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_f56574();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acosh_f56574());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_f56574();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acosh_f56574());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_f56574();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A9F9B8D2F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.fxc.hlsl
index f25c82a..0404779 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020BC10E5430(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002437B3787F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.fxc.hlsl
index 2e96ff9..8394b91 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_11dfda() {
+float16_t asin_11dfda() {
   float16_t res = float16_t(0.499755859375h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_11dfda();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_11dfda();
+  prevent_dce.Store<float16_t>(0u, asin_11dfda());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_11dfda();
+  prevent_dce.Store<float16_t>(0u, asin_11dfda());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_11dfda();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D23BF1E0A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.fxc.hlsl
index cc41b40..835b077 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023CC196E730(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000020ACD65BEF0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.fxc.hlsl
index 3284b71..545db87 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_2d8e29() {
+vector<float16_t, 3> asin_2d8e29() {
   vector<float16_t, 3> res = (float16_t(0.499755859375h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_2d8e29();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_2d8e29();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asin_2d8e29());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_2d8e29();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asin_2d8e29());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_2d8e29();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A5F3DCBA70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.fxc.hlsl
index 8909fd6..c9b870c 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026D4FA0FB50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023C2AAC8FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.fxc.hlsl
index 511f17d..71a9d4e 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_3cfbd4() {
+vector<float16_t, 4> asin_3cfbd4() {
   vector<float16_t, 4> res = (float16_t(0.499755859375h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_3cfbd4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_3cfbd4();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asin_3cfbd4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_3cfbd4();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asin_3cfbd4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_3cfbd4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DDBA2AA0E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl
index 8d2b400..81575d6 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000229C506FE70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000228489B50C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.fxc.hlsl
index c4067cf..07f0e91 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_b4aced() {
+vector<float16_t, 2> asin_b4aced() {
   vector<float16_t, 2> res = (float16_t(0.499755859375h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_b4aced();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_b4aced();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asin_b4aced());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_b4aced();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asin_b4aced());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_b4aced();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000217E43565D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.fxc.hlsl
index 29c7dd0..3db97d4 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000228D717FB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000226243FBE50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.fxc.hlsl
index 2ec3e2e..9cedd0a 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_468a48() {
+float16_t asinh_468a48() {
   float16_t res = float16_t(0.88134765625h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_468a48();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_468a48();
+  prevent_dce.Store<float16_t>(0u, asinh_468a48());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_468a48();
+  prevent_dce.Store<float16_t>(0u, asinh_468a48());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_468a48();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DC9B30AD80(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.fxc.hlsl
index 78aa542..a437328 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022AE263F280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001A9A15364F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.fxc.hlsl
index 34fb4b9..bce6dff 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_95ab2b() {
+vector<float16_t, 4> asinh_95ab2b() {
   vector<float16_t, 4> res = (float16_t(0.88134765625h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_95ab2b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_95ab2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asinh_95ab2b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_95ab2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asinh_95ab2b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_95ab2b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A3A068A6C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl
index b5e14da..2484882 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021293F20190(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E842FC50C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.fxc.hlsl
index b85e875..5523dcc 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_ad8f8b() {
+vector<float16_t, 2> asinh_ad8f8b() {
   vector<float16_t, 2> res = (float16_t(0.88134765625h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_ad8f8b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_ad8f8b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asinh_ad8f8b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_ad8f8b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asinh_ad8f8b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_ad8f8b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ED438F3C90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl
index dea137f..3613426 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002436B8DFF90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024AD96E9F20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.fxc.hlsl
index 4f79cdc..23bf97c 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_fb5e8c() {
+vector<float16_t, 3> asinh_fb5e8c() {
   vector<float16_t, 3> res = (float16_t(0.88134765625h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_fb5e8c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_fb5e8c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asinh_fb5e8c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_fb5e8c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asinh_fb5e8c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_fb5e8c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002288C8C4CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl
index 143a324..d635726 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ACEC17FB80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B1283A5440(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.fxc.hlsl
index 21f7f00..015b0af 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_19faea() {
+vector<float16_t, 4> atan_19faea() {
   vector<float16_t, 4> res = (float16_t(0.78515625h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_19faea();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_19faea();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan_19faea());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_19faea();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan_19faea());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_19faea();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C24CB0BC70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.fxc.hlsl
index 5ae16bc..223ddb5 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002320B53FA50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022FA16B64C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.fxc.hlsl
index 547e6b7..650e65a 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_1e1764() {
+vector<float16_t, 2> atan_1e1764() {
   vector<float16_t, 2> res = (float16_t(0.78515625h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_1e1764();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_1e1764();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan_1e1764());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_1e1764();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan_1e1764());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_1e1764();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AC0BEB4670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.fxc.hlsl
index 55e7f65..0fe0e9c 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000219669F80C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021059828F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.fxc.hlsl
index 072a52f..63fbd82 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_a5f421() {
+vector<float16_t, 3> atan_a5f421() {
   vector<float16_t, 3> res = (float16_t(0.78515625h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_a5f421();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_a5f421();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan_a5f421());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_a5f421();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan_a5f421());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_a5f421();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C83814670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.fxc.hlsl
index 566f8df..1f7716e 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002AC7851EEE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020A13AA9650(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.fxc.hlsl
index 9df345b..a5c51ef 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_a7ba61() {
+float16_t atan_a7ba61() {
   float16_t res = float16_t(0.78515625h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_a7ba61();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_a7ba61();
+  prevent_dce.Store<float16_t>(0u, atan_a7ba61());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_a7ba61();
+  prevent_dce.Store<float16_t>(0u, atan_a7ba61());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_a7ba61();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000166DA93A6E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.fxc.hlsl
index 2bcbac9..4043d25 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017F49FE1660(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001BD93C799A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.fxc.hlsl
index 4079fd9..2fdb7e1 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_21dfea() {
+vector<float16_t, 3> atan2_21dfea() {
   vector<float16_t, 3> res = (float16_t(0.78515625h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_21dfea();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_21dfea();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan2_21dfea());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_21dfea();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan2_21dfea());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_21dfea();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B731BB4F20(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.fxc.hlsl
index cd59222..c753e0c 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BAE3165290(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000220633493A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.fxc.hlsl
index 36ef2c7..8ee0145 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_93febc() {
+vector<float16_t, 2> atan2_93febc() {
   vector<float16_t, 2> res = (float16_t(0.78515625h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_93febc();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_93febc();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan2_93febc());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_93febc();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan2_93febc());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_93febc();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026BFA344CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.fxc.hlsl
index 074db88..6891e56 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AFF29F4590(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C10D56600(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.fxc.hlsl
index cddfc87..652ce8f 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_ca698e() {
+float16_t atan2_ca698e() {
   float16_t res = float16_t(0.78515625h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_ca698e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_ca698e();
+  prevent_dce.Store<float16_t>(0u, atan2_ca698e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_ca698e();
+  prevent_dce.Store<float16_t>(0u, atan2_ca698e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_ca698e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FC47873CC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.fxc.hlsl
index ad4dd1f..66945ce 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002402874EE40(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017667566220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.fxc.hlsl
index 7000a07..400e192 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_d983ab() {
+vector<float16_t, 4> atan2_d983ab() {
   vector<float16_t, 4> res = (float16_t(0.78515625h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_d983ab();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_d983ab();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan2_d983ab());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_d983ab();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan2_d983ab());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_d983ab();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000235F63166B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.fxc.hlsl
index 625f639..45f966c 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B91DD4EEA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D1CF5D6220(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.fxc.hlsl
index 25d3344..81b5bf2 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_5bf88d() {
+vector<float16_t, 2> atanh_5bf88d() {
   vector<float16_t, 2> res = (float16_t(0.548828125h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_5bf88d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_5bf88d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atanh_5bf88d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_5bf88d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atanh_5bf88d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_5bf88d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013988F24670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl
index aab0a7b..4646e06 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021C7301FFC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000143F9435150(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.fxc.hlsl
index a114fdc..e105885 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_d2d8cd() {
+float16_t atanh_d2d8cd() {
   float16_t res = float16_t(0.548828125h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_d2d8cd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_d2d8cd();
+  prevent_dce.Store<float16_t>(0u, atanh_d2d8cd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_d2d8cd();
+  prevent_dce.Store<float16_t>(0u, atanh_d2d8cd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_d2d8cd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000196AFF76D50(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl
index c7ca3cc..c1f31b0 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021C0232F280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F4CD938500(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.fxc.hlsl
index 798352a..33662d2 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_e3b450() {
+vector<float16_t, 4> atanh_e3b450() {
   vector<float16_t, 4> res = (float16_t(0.548828125h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_e3b450();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_e3b450();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atanh_e3b450());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_e3b450();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atanh_e3b450());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_e3b450();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001748653BC70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.fxc.hlsl
index 8bbcfc3..3201810 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016A9221EEA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E539DE7DF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.fxc.hlsl
index f34da43..428368d 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_ec4b06() {
+vector<float16_t, 3> atanh_ec4b06() {
   vector<float16_t, 3> res = (float16_t(0.548828125h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_ec4b06();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_ec4b06();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atanh_ec4b06());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_ec4b06();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atanh_ec4b06());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_ec4b06();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CC45224690(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl
index 53a7cb2..2179659 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DA10F3F9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025120875230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.fxc.hlsl
index 465d781..8cfcded 100644
--- a/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_1df11f() {
+vector<float16_t, 2> bitcast_1df11f() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_1df11f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_1df11f();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_1df11f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_1df11f();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_1df11f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_1df11f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x00000201DFD40680(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000201DFD40680(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002BABC21BA30(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl
index 6bb2965..e72f33f 100644
--- a/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002632D2615A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026AFC8CB700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.fxc.hlsl
index c184271..9773a24 100644
--- a/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_3e7b47() {
+vector<float16_t, 4> bitcast_3e7b47() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_3e7b47();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_3e7b47();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_3e7b47());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_3e7b47();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_3e7b47());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_3e7b47();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x00000240A8E80680(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000240A8E80680(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x00000206DCEA65E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl
index 4d0a9cb..2ac96bf 100644
--- a/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022B9B7BE0C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017D79ED6150(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.fxc.hlsl
index ebba1e2..9684f09 100644
--- a/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_429d64() {
+vector<float16_t, 4> bitcast_429d64() {
   vector<float16_t, 4> res = vector<float16_t, 4>(float16_t(0.0h), float16_t(1.875h), float16_t(0.0h), float16_t(1.875h));
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_429d64();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_429d64();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_429d64());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_429d64();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_429d64());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_429d64();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CFD1C618C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001CFD1C618C0(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002BAE6B365F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.fxc.hlsl
index 611be0f..1a5d9b4 100644
--- a/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002276A98F6F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022A22AE4E70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.fxc.hlsl
index 97be207..6a64d0a 100644
--- a/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_436211() {
+float16_t bitcast_436211() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_436211();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_436211();
+  prevent_dce.Store<float16_t>(0u, bitcast_436211());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_436211();
+  prevent_dce.Store<float16_t>(0u, bitcast_436211());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_436211();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EF47B520C0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001EF47B520C0(4,13-15): error X3000: unrecognized identifier 'res'
+C:\src\dawn\Shader@0x00000120899E3CA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.fxc.hlsl
index 4200149..c94b075 100644
--- a/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020996D1F500(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000183B8C16610(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.fxc.hlsl
index cb94d1e..40eed89 100644
--- a/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_5081ed() {
+vector<float16_t, 3> bitcast_5081ed() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_5081ed();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_5081ed();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, bitcast_5081ed());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_5081ed();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, bitcast_5081ed());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_5081ed();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029A81C50680(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000029A81C50680(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000024102AB6540(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl
index 1c1daac..4b0ea45 100644
--- a/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000168E6EAFAA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025E3C2A3FB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.fxc.hlsl
index 95754e1..a0e0ff3 100644
--- a/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_66e93d() {
+vector<float16_t, 2> bitcast_66e93d() {
   vector<float16_t, 2> res = vector<float16_t, 2>(float16_t(0.00000005960464477539h), float16_t(0.0h));
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_66e93d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_66e93d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_66e93d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_66e93d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_66e93d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_66e93d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x00000184E8ACFEE0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000184E8ACFEE0(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x00000161EB4CD440(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl
index a641066..3a5853b 100644
--- a/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F0A6FAF670(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000146CDC05D10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.fxc.hlsl
index 6628d9c..8fb14b5 100644
--- a/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_674557() {
+vector<float16_t, 2> bitcast_674557() {
   vector<float16_t, 2> res = vector<float16_t, 2>(float16_t(0.00000005960464477539h), float16_t(0.0h));
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_674557();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_674557();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_674557());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_674557();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_674557());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_674557();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AD2A36FEE0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001AD2A36FEE0(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x00000276110BCD40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.fxc.hlsl
index 64a3cda..bf671b4 100644
--- a/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002639B1C0910(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000244EE26F1B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.fxc.hlsl
index 2a2959f..b1138f1 100644
--- a/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_71c92a() {
+vector<float16_t, 4> bitcast_71c92a() {
   vector<float16_t, 4> res = vector<float16_t, 4>(float16_t(0.00000005960464477539h), float16_t(0.0h), float16_t(0.00000005960464477539h), float16_t(0.0h));
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_71c92a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_71c92a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_71c92a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_71c92a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_71c92a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_71c92a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CEE43D1BB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001CEE43D1BB0(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000021A7BA859C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl
index b5646b3..55ebd9b 100644
--- a/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A60FB56710(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ADA8333CC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.fxc.hlsl
index 3652ff7..614081a 100644
--- a/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_9ca42c() {
+vector<float16_t, 2> bitcast_9ca42c() {
   vector<float16_t, 2> res = vector<float16_t, 2>(float16_t(0.0h), float16_t(1.875h));
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_9ca42c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_9ca42c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_9ca42c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_9ca42c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_9ca42c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_9ca42c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C043C7FEE0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001C043C7FEE0(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001FE7E1865E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl
index fc9a668..d7b6366 100644
--- a/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013E1483F940(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021A965D93C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.fxc.hlsl
index 66ae38d..fc9b554 100644
--- a/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.fxc.hlsl
@@ -1,39 +1,46 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_bc3994() {
+vector<float16_t, 4> bitcast_bc3994() {
   vector<float16_t, 4> res = vector<float16_t, 4>(float16_t(0.00000005960464477539h), float16_t(0.0h), float16_t(0.00000005960464477539h), float16_t(0.0h));
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_bc3994();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_bc3994();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_bc3994());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_bc3994();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_bc3994());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_bc3994();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x00000127B6F41BB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000127B6F41BB0(5,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000025BA404D440(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl
index a8418ae..578c646 100644
--- a/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020AC867F500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002555082BFC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.fxc.hlsl
index 0c3b19f..0356f03 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_09bf52() {
+vector<float16_t, 3> ceil_09bf52() {
   vector<float16_t, 3> res = (float16_t(2.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_09bf52();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_09bf52();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ceil_09bf52());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_09bf52();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ceil_09bf52());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_09bf52();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002032688D500(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.fxc.hlsl
index 236f37f..42c6084 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021E8312F2A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016CA1C865D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.fxc.hlsl
index 91688c3..eeab71f 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_18c240() {
+vector<float16_t, 2> ceil_18c240() {
   vector<float16_t, 2> res = (float16_t(2.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_18c240();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_18c240();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ceil_18c240());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_18c240();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ceil_18c240());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_18c240();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001275B47AA60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.fxc.hlsl
index 44f4e7f..acf67b2 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021C5EE70450(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000219BB88D500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.fxc.hlsl
index 6faea0a..b11b923 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_4bca2a() {
+vector<float16_t, 4> ceil_4bca2a() {
   vector<float16_t, 4> res = (float16_t(2.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_4bca2a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_4bca2a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ceil_4bca2a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_4bca2a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ceil_4bca2a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_4bca2a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AE41374290(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl
index ecd6f8a..ab48141 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C04361F9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000213217BD0B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.fxc.hlsl
index 9a7d89b..7583c7b 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_f3f889() {
+float16_t ceil_f3f889() {
   float16_t res = float16_t(2.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_f3f889();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_f3f889();
+  prevent_dce.Store<float16_t>(0u, ceil_f3f889());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_f3f889();
+  prevent_dce.Store<float16_t>(0u, ceil_f3f889());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_f3f889();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A63F6F6210(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.fxc.hlsl
index 88d9fc1..40aed5d 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A44EC1FB80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002791CC982D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.fxc.hlsl
index 5cdf0da..b5ad043 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_235b29() {
+vector<float16_t, 2> clamp_235b29() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_235b29();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_235b29();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, clamp_235b29());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_235b29();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, clamp_235b29());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_235b29();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C417BB63F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.fxc.hlsl
index fb25b93..429e6bd 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019BBA7FED10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020F8F8BF980(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.fxc.hlsl
index 76665c4..f635dc2 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_2c251b() {
+vector<float16_t, 4> clamp_2c251b() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_2c251b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_2c251b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, clamp_2c251b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_2c251b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, clamp_2c251b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_2c251b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E91F4861F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.fxc.hlsl
index cbaae5d..b003cce 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F711F2DC30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D4EAE98F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.fxc.hlsl
index b2d325d..f6179cb 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_553ffb() {
+float16_t clamp_553ffb() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_553ffb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_553ffb();
+  prevent_dce.Store<float16_t>(0u, clamp_553ffb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_553ffb();
+  prevent_dce.Store<float16_t>(0u, clamp_553ffb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_553ffb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BD0B736D60(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.fxc.hlsl
index 248f8a2..5679600 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002AD63511170(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000013556CA61F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.fxc.hlsl
index a142ba9..5ea14b6 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_b195eb() {
+vector<float16_t, 3> clamp_b195eb() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_b195eb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_b195eb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, clamp_b195eb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_b195eb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, clamp_b195eb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_b195eb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015EB3395960(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.fxc.hlsl
index e430128..6ceccfb 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F78B073970(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018D634E4FF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.fxc.hlsl
index ddc8085..a1c2fad 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_0835a8() {
+vector<float16_t, 3> cos_0835a8() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_0835a8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_0835a8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cos_0835a8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_0835a8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cos_0835a8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_0835a8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026E52CAD250(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.fxc.hlsl
index 17542e5..02b4544 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD09BBF9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002369C7B65F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.fxc.hlsl
index 1d55912..c954b05 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_0a89f7() {
+vector<float16_t, 4> cos_0a89f7() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_0a89f7();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_0a89f7();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cos_0a89f7());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_0a89f7();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cos_0a89f7());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_0a89f7();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018E1E3B5850(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.fxc.hlsl
index aa9a339..ea98088 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B5E2C1F4D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002463FCC50C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.fxc.hlsl
index 38a711f..ab09bfe 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_5bc2c6() {
+vector<float16_t, 2> cos_5bc2c6() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_5bc2c6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_5bc2c6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cos_5bc2c6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_5bc2c6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cos_5bc2c6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_5bc2c6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016169CA6150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl
index 6a98813..001fc5e 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE1A0AFB80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002065DBBB1A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.fxc.hlsl
index e15c623..6a47c8f 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_fc047d() {
+float16_t cos_fc047d() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_fc047d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_fc047d();
+  prevent_dce.Store<float16_t>(0u, cos_fc047d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_fc047d();
+  prevent_dce.Store<float16_t>(0u, cos_fc047d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_fc047d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E6E5DD6C10(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.fxc.hlsl
index 9a95dbc..3f8331b 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FC1B87EEC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000026710A14180(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.fxc.hlsl
index 6b21c54..860ef52 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_2ed778() {
+float16_t cosh_2ed778() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_2ed778();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_2ed778();
+  prevent_dce.Store<float16_t>(0u, cosh_2ed778());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_2ed778();
+  prevent_dce.Store<float16_t>(0u, cosh_2ed778());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_2ed778();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CE1F2FC470(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.fxc.hlsl
index 47b62bd..5c03090 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002627F15EEC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000013AD47B61F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.fxc.hlsl
index 48030f0..c638db8 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_3b7bbf() {
+vector<float16_t, 4> cosh_3b7bbf() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_3b7bbf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_3b7bbf();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cosh_3b7bbf());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_3b7bbf();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cosh_3b7bbf());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_3b7bbf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000210DA5E60B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl
index cdb530a..e0e53f7 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E7C8BFE9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002C7F6F6BB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.fxc.hlsl
index 33088aa..8e01fe0 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_43b672() {
+vector<float16_t, 2> cosh_43b672() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_43b672();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_43b672();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cosh_43b672());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_43b672();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cosh_43b672());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_43b672();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020A8AB53C60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.fxc.hlsl
index 9884f1c..fcb888c 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000264FFA9FB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000266CE3F9610(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.fxc.hlsl
index e59daa0..d90565d 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_b1b8a0() {
+vector<float16_t, 3> cosh_b1b8a0() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_b1b8a0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_b1b8a0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cosh_b1b8a0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_b1b8a0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cosh_b1b8a0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_b1b8a0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025C9F8D4670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl
index 0e0e069..a0d429d 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025B48A8F940(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000125A54C64C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.fxc.hlsl
index 2478291..a48e806 100644
--- a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cross_9857cb() {
+vector<float16_t, 3> cross_9857cb() {
   vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cross_9857cb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cross_9857cb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cross_9857cb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cross_9857cb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cross_9857cb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cross_9857cb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002661045BA10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.fxc.hlsl
index 218142f..e7df9ac 100644
--- a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000249849AE920(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A0C1458FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.fxc.hlsl
index 09e3796..3cb3d1f 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_3055d3() {
+vector<float16_t, 4> degrees_3055d3() {
   vector<float16_t, 4> res = (float16_t(57.3125h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_3055d3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_3055d3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, degrees_3055d3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_3055d3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, degrees_3055d3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_3055d3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D75F1C6D80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.fxc.hlsl
index ccafb2d..7e0fbe7 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002715BFBE9C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000171BFBD50C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.fxc.hlsl
index 909d86f..6fd0575 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_5e9805() {
+float16_t degrees_5e9805() {
   float16_t res = float16_t(57.3125h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_5e9805();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_5e9805();
+  prevent_dce.Store<float16_t>(0u, degrees_5e9805());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_5e9805();
+  prevent_dce.Store<float16_t>(0u, degrees_5e9805());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_5e9805();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002317F4461E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.fxc.hlsl
index bf2e0b4..984328c 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A6E8911500(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000019DD42668B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.fxc.hlsl
index f09b6f2..2a0ba60 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_dfe8f4() {
+vector<float16_t, 3> degrees_dfe8f4() {
   vector<float16_t, 3> res = (float16_t(57.3125h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_dfe8f4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_dfe8f4();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, degrees_dfe8f4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_dfe8f4();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, degrees_dfe8f4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_dfe8f4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002285AC0C1A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl
index 63b07f6..915fa5f 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024E496EFB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017D5CDF3A30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.fxc.hlsl
index 092a964..30ea4b4 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_f59715() {
+vector<float16_t, 2> degrees_f59715() {
   vector<float16_t, 2> res = (float16_t(57.3125h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_f59715();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_f59715();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, degrees_f59715());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_f59715();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, degrees_f59715());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_f59715();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019708CA65D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.fxc.hlsl
index ffd3cf4..bf08ca7 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027B6233F140(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000210B610AFC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.fxc.hlsl
index a9663db..3805796 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void determinant_32bfde() {
+float16_t determinant_32bfde() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  determinant_32bfde();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  determinant_32bfde();
+  prevent_dce.Store<float16_t>(0u, determinant_32bfde());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  determinant_32bfde();
+  prevent_dce.Store<float16_t>(0u, determinant_32bfde());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = determinant_32bfde();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016F361E6600(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.fxc.hlsl
index 593fb78..b85e303 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017A17060ED0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022C34112B00(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.fxc.hlsl
index c3f37ef..674949d 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void determinant_d7c86f() {
+float16_t determinant_d7c86f() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  determinant_d7c86f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  determinant_d7c86f();
+  prevent_dce.Store<float16_t>(0u, determinant_d7c86f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  determinant_d7c86f();
+  prevent_dce.Store<float16_t>(0u, determinant_d7c86f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = determinant_d7c86f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026D01725520(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl
index 631a5ed..f5e802c 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E88DD8F7D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C984DED560(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.fxc.hlsl
index 9db0c8d..e7bf93a 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void determinant_fc12a5() {
+float16_t determinant_fc12a5() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  determinant_fc12a5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  determinant_fc12a5();
+  prevent_dce.Store<float16_t>(0u, determinant_fc12a5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  determinant_fc12a5();
+  prevent_dce.Store<float16_t>(0u, determinant_fc12a5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = determinant_fc12a5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001449434D460(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl
index c652c7d..efaa305 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C6AA56E990(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022345C6D580(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.fxc.hlsl
index 1d88dc1..bc8312f 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_7272f3() {
+float16_t distance_7272f3() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_7272f3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_7272f3();
+  prevent_dce.Store<float16_t>(0u, distance_7272f3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_7272f3();
+  prevent_dce.Store<float16_t>(0u, distance_7272f3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_7272f3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000183A9794BF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.fxc.hlsl
index 7766f6c..408f949 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024DC89D8000(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000204008C9B40(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.fxc.hlsl
index 29bf0f3..335310c 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_7d201f() {
+float16_t distance_7d201f() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_7d201f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_7d201f();
+  prevent_dce.Store<float16_t>(0u, distance_7d201f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_7d201f();
+  prevent_dce.Store<float16_t>(0u, distance_7d201f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_7d201f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020EA5143CC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.fxc.hlsl
index 372341d..3332e41 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025B9D1A0160(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F9963B4F70(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.fxc.hlsl
index 5e74981..6e2dafb 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_892a5d() {
+float16_t distance_892a5d() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_892a5d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_892a5d();
+  prevent_dce.Store<float16_t>(0u, distance_892a5d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_892a5d();
+  prevent_dce.Store<float16_t>(0u, distance_892a5d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_892a5d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021B442D65C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.fxc.hlsl
index 4e22b8c..d9255db 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002763DC752F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000029051374E70(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.fxc.hlsl
index 5755005..60793d6 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_928fa0() {
+float16_t distance_928fa0() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_928fa0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_928fa0();
+  prevent_dce.Store<float16_t>(0u, distance_928fa0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_928fa0();
+  prevent_dce.Store<float16_t>(0u, distance_928fa0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_928fa0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022A2C0EB6E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.fxc.hlsl
index 1b35ebc..ac26d36 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000287E32214B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000018E5E2B8B70(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.fxc.hlsl
index bbe4fea..d7402a8 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void dot_8e40f1() {
+float16_t dot_8e40f1() {
   float16_t res = float16_t(3.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  dot_8e40f1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  dot_8e40f1();
+  prevent_dce.Store<float16_t>(0u, dot_8e40f1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  dot_8e40f1();
+  prevent_dce.Store<float16_t>(0u, dot_8e40f1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = dot_8e40f1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D1C6387F80(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.fxc.hlsl
index f4e2441..03eb5e8 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C55AB3F790(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000020C08CCB6E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.fxc.hlsl
index c1283eb..6559ceb 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void dot_cd5a04() {
+float16_t dot_cd5a04() {
   float16_t res = float16_t(2.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  dot_cd5a04();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  dot_cd5a04();
+  prevent_dce.Store<float16_t>(0u, dot_cd5a04());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  dot_cd5a04();
+  prevent_dce.Store<float16_t>(0u, dot_cd5a04());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = dot_cd5a04();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000261CDF160C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.fxc.hlsl
index e0df971..2ff6ab6 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020A4F0F5320(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E600216220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.fxc.hlsl
index 31b2836..254e390 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void dot_d0d179() {
+float16_t dot_d0d179() {
   float16_t res = float16_t(4.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  dot_d0d179();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  dot_d0d179();
+  prevent_dce.Store<float16_t>(0u, dot_d0d179());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  dot_d0d179();
+  prevent_dce.Store<float16_t>(0u, dot_d0d179());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = dot_d0d179();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9192360C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.fxc.hlsl
index b6fc344..a663bbf 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002848126E940(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C6CD7A9AE0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.fxc.hlsl
index a5e5d72..8f46441 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_13806d() {
+vector<float16_t, 3> exp_13806d() {
   vector<float16_t, 3> res = (float16_t(2.716796875h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_13806d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_13806d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp_13806d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_13806d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp_13806d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_13806d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025F646164A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.fxc.hlsl
index 7ea58e7..f1c6b6f 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FFE68A05D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014A23DC86D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.fxc.hlsl
index 12f9da4..c00dd32 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_2e08e2() {
+vector<float16_t, 2> exp_2e08e2() {
   vector<float16_t, 2> res = (float16_t(2.716796875h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_2e08e2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_2e08e2();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp_2e08e2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_2e08e2();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp_2e08e2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_2e08e2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000187FB01C380(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.fxc.hlsl
index 631b1a3..b35b4bd 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E9CFB3D590(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002631F4AF9E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.fxc.hlsl
index b2cfb0c..530da32 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_611a87() {
+vector<float16_t, 4> exp_611a87() {
   vector<float16_t, 4> res = (float16_t(2.716796875h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_611a87();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_611a87();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp_611a87());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_611a87();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp_611a87());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_611a87();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002984DD37F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.fxc.hlsl
index 7d89a83..9e1dcaf 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025602F7E9C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D511CA8500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.fxc.hlsl
index dbee59b..0e31a97 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_c18fe9() {
+float16_t exp_c18fe9() {
   float16_t res = float16_t(2.716796875h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_c18fe9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_c18fe9();
+  prevent_dce.Store<float16_t>(0u, exp_c18fe9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_c18fe9();
+  prevent_dce.Store<float16_t>(0u, exp_c18fe9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_c18fe9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024820C16C10(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.fxc.hlsl
index adf554b..90607f9 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CC6F3EFB80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B66AD4E810(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.fxc.hlsl
index db10912..a03e111 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_151a4c() {
+vector<float16_t, 2> exp2_151a4c() {
   vector<float16_t, 2> res = (float16_t(2.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_151a4c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_151a4c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp2_151a4c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_151a4c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp2_151a4c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_151a4c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E5201DBA00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.fxc.hlsl
index 174bed0..6ee68b1 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000232A9C7F4F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DEBF9A4FD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.fxc.hlsl
index 015bdc0..f831bee 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_751377() {
+vector<float16_t, 3> exp2_751377() {
   vector<float16_t, 3> res = (float16_t(2.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_751377();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_751377();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp2_751377());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_751377();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp2_751377());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_751377();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000247F8E2BA00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.fxc.hlsl
index 004f2b2..ca8d518 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022837945550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A3BB2264C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.fxc.hlsl
index 8053410..fe0b08b 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_b408e4() {
+float16_t exp2_b408e4() {
   float16_t res = float16_t(2.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_b408e4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_b408e4();
+  prevent_dce.Store<float16_t>(0u, exp2_b408e4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_b408e4();
+  prevent_dce.Store<float16_t>(0u, exp2_b408e4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_b408e4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002537FCB3CF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.fxc.hlsl
index 20dff2e..b5324d8 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002419379F280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021DC2E160B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.fxc.hlsl
index b8d120c..9364ea9 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_ffa827() {
+vector<float16_t, 4> exp2_ffa827() {
   vector<float16_t, 4> res = (float16_t(2.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_ffa827();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_ffa827();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp2_ffa827());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_ffa827();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp2_ffa827());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_ffa827();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002418C0542B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.fxc.hlsl
index a39973e..20d4f22 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000116BA4DE490(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020746226750(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.fxc.hlsl
index 3c0652b..4a6ad92 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void faceForward_524986() {
+vector<float16_t, 3> faceForward_524986() {
   vector<float16_t, 3> res = (float16_t(-1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  faceForward_524986();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  faceForward_524986();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, faceForward_524986());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  faceForward_524986();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, faceForward_524986());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = faceForward_524986();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BC05AA6630(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.fxc.hlsl
index bfaa05e..1c477e7 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021CAF8EE760(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D805FBF9A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.fxc.hlsl
index 4669b4c..9617a8a 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void faceForward_cc63dc() {
+vector<float16_t, 4> faceForward_cc63dc() {
   vector<float16_t, 4> res = (float16_t(-1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  faceForward_cc63dc();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  faceForward_cc63dc();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, faceForward_cc63dc());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  faceForward_cc63dc();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, faceForward_cc63dc());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = faceForward_cc63dc();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020B663CBD20(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl
index 5ecdcd5..e658410 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000295F0800A10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DBDA1F9B00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.fxc.hlsl
index f9c4ad8..72eb675 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void faceForward_fb0f2e() {
+vector<float16_t, 2> faceForward_fb0f2e() {
   vector<float16_t, 2> res = (float16_t(-1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  faceForward_fb0f2e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  faceForward_fb0f2e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, faceForward_fb0f2e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  faceForward_fb0f2e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, faceForward_fb0f2e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = faceForward_fb0f2e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021AC4380810(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl
index 95cc262..7ac8c1b 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B8A26104A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020426CC8FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.fxc.hlsl
index 0c8e2f7..7bb5bf6 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_3802c0() {
+vector<float16_t, 3> floor_3802c0() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_3802c0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_3802c0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, floor_3802c0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_3802c0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, floor_3802c0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_3802c0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C1654742B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.fxc.hlsl
index 895710c..4df8ce6 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001445DF65550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D8FB3C52F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.fxc.hlsl
index ffccb1b..3dd4533 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_84658c() {
+vector<float16_t, 2> floor_84658c() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_84658c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_84658c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, floor_84658c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_84658c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, floor_84658c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_84658c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013CE64C65C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.fxc.hlsl
index d34ee7d..503e875 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EA5AABFB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019F5C874F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.fxc.hlsl
index b124d33..53f6a528 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_a2d31b() {
+vector<float16_t, 4> floor_a2d31b() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_a2d31b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_a2d31b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, floor_a2d31b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_a2d31b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, floor_a2d31b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_a2d31b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024670D54290(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.fxc.hlsl
index 3a10e7b..41143ef 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016BF3B0F860(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021C13086750(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.fxc.hlsl
index 90dbb72..6b5d775 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_b6e09c() {
+float16_t floor_b6e09c() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_b6e09c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_b6e09c();
+  prevent_dce.Store<float16_t>(0u, floor_b6e09c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_b6e09c();
+  prevent_dce.Store<float16_t>(0u, floor_b6e09c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_b6e09c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016EB97F65E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.fxc.hlsl
index 793e869..f05c00a 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012B59C9F280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002AE597C4E50(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.fxc.hlsl
index 39ad777..268712a 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_ab7818() {
+vector<float16_t, 4> fma_ab7818() {
   vector<float16_t, 4> res = (float16_t(2.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_ab7818();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_ab7818();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fma_ab7818());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_ab7818();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fma_ab7818());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_ab7818();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DBE78D6520(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.fxc.hlsl
index cdec78d..840fb5f 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002735841F700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000136CAB16220(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.fxc.hlsl
index f8b51c4..486ba22 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_bf21b6() {
+vector<float16_t, 2> fma_bf21b6() {
   vector<float16_t, 2> res = (float16_t(2.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_bf21b6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_bf21b6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fma_bf21b6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_bf21b6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fma_bf21b6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_bf21b6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023930656560(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.fxc.hlsl
index e98a0c1..71cfcd4 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014AF9D5EBC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AD7A0DBD80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.fxc.hlsl
index 1592b24..0be7788 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_c8abb3() {
+float16_t fma_c8abb3() {
   float16_t res = float16_t(2.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_c8abb3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_c8abb3();
+  prevent_dce.Store<float16_t>(0u, fma_c8abb3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_c8abb3();
+  prevent_dce.Store<float16_t>(0u, fma_c8abb3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_c8abb3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024DE9916C80(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.fxc.hlsl
index e53ec89..eca1249 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012A2734F220(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FB663C61F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.fxc.hlsl
index 217100a..52fa620 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_e7abdc() {
+vector<float16_t, 3> fma_e7abdc() {
   vector<float16_t, 3> res = (float16_t(2.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_e7abdc();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_e7abdc();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fma_e7abdc());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_e7abdc();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fma_e7abdc());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_e7abdc();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000243E61E3CF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.fxc.hlsl
index 0559430..2743ed2 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025BFA226F60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022AF4A58F10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.fxc.hlsl
index 8675ec6..d0a9d0c 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_181aa9() {
+vector<float16_t, 2> fract_181aa9() {
   vector<float16_t, 2> res = (float16_t(0.25h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_181aa9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_181aa9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fract_181aa9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_181aa9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fract_181aa9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_181aa9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020D75E8E690(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.fxc.hlsl
index 24ae2e2..52077e8 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002263877F2A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000229F61163C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.fxc.hlsl
index 218fbde..bbee8b6 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_498c77() {
+vector<float16_t, 4> fract_498c77() {
   vector<float16_t, 4> res = (float16_t(0.25h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_498c77();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_498c77();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fract_498c77());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_498c77();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fract_498c77());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_498c77();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023B2A23BB90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.fxc.hlsl
index 2545694..8f10c03 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000215EB3FF9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020D026F5220(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.fxc.hlsl
index ddc3b0a..2ec2efa 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_958a1d() {
+vector<float16_t, 3> fract_958a1d() {
   vector<float16_t, 3> res = (float16_t(0.25h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_958a1d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_958a1d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fract_958a1d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_958a1d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fract_958a1d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_958a1d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000218AAC6DBB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.fxc.hlsl
index 3240479..ba62134 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B1F732F690(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002EF04E96240(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.fxc.hlsl
index 569c5d4..7553b77 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_eb38ce() {
+float16_t fract_eb38ce() {
   float16_t res = float16_t(0.25h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_eb38ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_eb38ce();
+  prevent_dce.Store<float16_t>(0u, fract_eb38ce());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_eb38ce();
+  prevent_dce.Store<float16_t>(0u, fract_eb38ce());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_eb38ce();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F6750A65D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.fxc.hlsl
index 86620c9..629d14c 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002227538F4C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001DDD01961F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.fxc.hlsl
index d9902d8..c1fafc7 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   frexp_result_vec4_f16 res = {(float16_t(0.5h)).xxxx, (1).xxxx};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_3dd21e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_3dd21e();
   return;
@@ -34,3 +18,27 @@
   frexp_3dd21e();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_3dd21e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D1B79CFF20(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl
index d47fb27..cfd9dc0 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AC10F3F090(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021C484EE050(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.fxc.hlsl
index e57699e..e797a22 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   frexp_result_f16 res = {float16_t(0.5h), 1};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_5257dd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_5257dd();
   return;
@@ -34,3 +18,27 @@
   frexp_5257dd();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_5257dd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DEA0E35CA0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.fxc.hlsl
index fc41d10..a2c6209 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224571B0170(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C8D21CD290(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.fxc.hlsl
index 084f928..9ae789c 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   frexp_result_vec2_f16 res = {(float16_t(0.5h)).xx, (1).xx};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_5f47bf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_5f47bf();
   return;
@@ -34,3 +18,27 @@
   frexp_5f47bf();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_5f47bf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000200C7F4AFA0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl
index 45aef36..14f88cf 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000193C062FF10(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D76470BFC0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.fxc.hlsl
index 4c2ca85..5d5f059 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   frexp_result_vec3_f16 res = {(float16_t(0.5h)).xxx, (1).xxx};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_ae4a66();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_ae4a66();
   return;
@@ -34,3 +18,27 @@
   frexp_ae4a66();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_ae4a66();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002063F34D1C0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl
index fadf5e3..818c3ce 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BAC34EE2F0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DC32B4D310(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl
index a19367c..f1b3ef0 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<i32>;
 
-fn inputAttachmentLoad_315bf5() {
+fn inputAttachmentLoad_315bf5() -> vec4<i32> {
   var res : vec4<i32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_315bf5();
+  prevent_dce = inputAttachmentLoad_315bf5();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl
index a19367c..f1b3ef0 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<i32>;
 
-fn inputAttachmentLoad_315bf5() {
+fn inputAttachmentLoad_315bf5() -> vec4<i32> {
   var res : vec4<i32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_315bf5();
+  prevent_dce = inputAttachmentLoad_315bf5();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl
index 502b482..3b03801 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl
index 0972091..3b03801 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1051 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl
index a87b277..05cc907 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<f32>;
 
-fn inputAttachmentLoad_c38b2f() {
+fn inputAttachmentLoad_c38b2f() -> vec4<f32> {
   var res : vec4<f32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_c38b2f();
+  prevent_dce = inputAttachmentLoad_c38b2f();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl
index a87b277..05cc907 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<f32>;
 
-fn inputAttachmentLoad_c38b2f() {
+fn inputAttachmentLoad_c38b2f() -> vec4<f32> {
   var res : vec4<f32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_c38b2f();
+  prevent_dce = inputAttachmentLoad_c38b2f();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl
index 502b482..3b03801 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl
index 0972091..3b03801 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1051 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl
index d0dc177..11d8de6 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<u32>;
 
-fn inputAttachmentLoad_fc4d97() {
+fn inputAttachmentLoad_fc4d97() -> vec4<u32> {
   var res : vec4<u32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_fc4d97();
+  prevent_dce = inputAttachmentLoad_fc4d97();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl
index d0dc177..11d8de6 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<u32>;
 
-fn inputAttachmentLoad_fc4d97() {
+fn inputAttachmentLoad_fc4d97() -> vec4<u32> {
   var res : vec4<u32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_fc4d97();
+  prevent_dce = inputAttachmentLoad_fc4d97();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl
index 502b482..3b03801 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl
index 0972091..3b03801 100644
--- a/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1051 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.fxc.hlsl
index 51f0585..8758a98 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_440300() {
+float16_t inverseSqrt_440300() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_440300();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_440300();
+  prevent_dce.Store<float16_t>(0u, inverseSqrt_440300());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_440300();
+  prevent_dce.Store<float16_t>(0u, inverseSqrt_440300());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_440300();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026163984AB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl
index ac3fd77..2d91461 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F8F021F260(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022B88F0B700(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl
index fb74170..3a6881d 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_5f51f8() {
+vector<float16_t, 2> inverseSqrt_5f51f8() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_5f51f8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_5f51f8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, inverseSqrt_5f51f8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_5f51f8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, inverseSqrt_5f51f8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_5f51f8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B7283214A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl
index 66ef1bd..6e30f89 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F883204D30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000292F217BA80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl
index efbd3e4..3d2cf5b 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_b85ebd() {
+vector<float16_t, 3> inverseSqrt_b85ebd() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_b85ebd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_b85ebd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, inverseSqrt_b85ebd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_b85ebd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, inverseSqrt_b85ebd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_b85ebd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026A15F559D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl
index 11c3a35..6a46f5a 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C8FC5A1230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D867E08FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl
index a8d1b42..3c71517 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_cbdc70() {
+vector<float16_t, 4> inverseSqrt_cbdc70() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_cbdc70();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_cbdc70();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, inverseSqrt_cbdc70());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_cbdc70();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, inverseSqrt_cbdc70());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_cbdc70();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020E1E5AB4B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl
index d0a2cdc..6805cb8 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000180C655E320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001409CE462F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.fxc.hlsl
index 78c4263..eacdeaa 100644
--- a/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_082c1f() {
+float16_t ldexp_082c1f() {
   float16_t res = float16_t(2.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_082c1f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_082c1f();
+  prevent_dce.Store<float16_t>(0u, ldexp_082c1f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_082c1f();
+  prevent_dce.Store<float16_t>(0u, ldexp_082c1f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_082c1f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001821EF45F90(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl
index 5eb0e0d..4ed26e2 100644
--- a/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F685D6EE70(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002A4EC9D6150(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.fxc.hlsl
index 9b131f2..2df409d 100644
--- a/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_217a31() {
+vector<float16_t, 2> ldexp_217a31() {
   vector<float16_t, 2> res = (float16_t(2.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_217a31();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_217a31();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_217a31());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_217a31();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_217a31());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_217a31();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A0BBE0ADA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.fxc.hlsl
index 29f114e..29d856f 100644
--- a/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C12035570(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002407B82D490(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.fxc.hlsl
index a645898..ecaae7c 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_3d90b4() {
+vector<float16_t, 2> ldexp_3d90b4() {
   vector<float16_t, 2> res = (float16_t(2.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_3d90b4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_3d90b4();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_3d90b4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_3d90b4();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_3d90b4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_3d90b4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020D49DE5750(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl
index 253e88b..477de1f 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002380B09E6B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EED0848F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.fxc.hlsl
index d1b524f..f80f0c2 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_624e0c() {
+float16_t ldexp_624e0c() {
   float16_t res = float16_t(2.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_624e0c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_624e0c();
+  prevent_dce.Store<float16_t>(0u, ldexp_624e0c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_624e0c();
+  prevent_dce.Store<float16_t>(0u, ldexp_624e0c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_624e0c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000164F34E5060(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl
index 822f7b8..ca40619 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002470127F280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000203ADF056C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.fxc.hlsl
index d419d9a..c289f9b 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_7485ce() {
+vector<float16_t, 3> ldexp_7485ce() {
   vector<float16_t, 3> res = (float16_t(2.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_7485ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_7485ce();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_7485ce());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_7485ce();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_7485ce());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_7485ce();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021574072410(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl
index f6d1ea0..e989046 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025E8915F6B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D0CFFF6560(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.fxc.hlsl
index 8ef71b4..4e32e5d 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_7fa13c() {
+vector<float16_t, 4> ldexp_7fa13c() {
   vector<float16_t, 4> res = (float16_t(2.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_7fa13c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_7fa13c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_7fa13c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_7fa13c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_7fa13c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_7fa13c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CD8E3646C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl
index 7bdc39c..7b3c6f5 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000223F2E6F9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020B0BAE4830(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.fxc.hlsl
index 3fcccbf..d231b93 100644
--- a/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_8a0c2f() {
+vector<float16_t, 4> ldexp_8a0c2f() {
   vector<float16_t, 4> res = (float16_t(2.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_8a0c2f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_8a0c2f();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_8a0c2f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_8a0c2f();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_8a0c2f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_8a0c2f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DD5E57BA20(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl
index c385fab..16448e4 100644
--- a/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AFBCFCE9E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E52A5074B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.fxc.hlsl
index 319bb56..01461a2 100644
--- a/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_8e43e9() {
+vector<float16_t, 3> ldexp_8e43e9() {
   vector<float16_t, 3> res = (float16_t(2.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_8e43e9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_8e43e9();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_8e43e9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_8e43e9();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_8e43e9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_8e43e9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A2A4ABC500(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl
index 47870f9..e4c0083 100644
--- a/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002802B7E7340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000238BEE34E90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.fxc.hlsl
index 246a8c5..eb8a3e3 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_3f0e13() {
+float16_t length_3f0e13() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_3f0e13();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_3f0e13();
+  prevent_dce.Store<float16_t>(0u, length_3f0e13());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_3f0e13();
+  prevent_dce.Store<float16_t>(0u, length_3f0e13());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_3f0e13();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022A68D1B7B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.fxc.hlsl
index e39f044..ef032f4 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021209ECE800(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E2E74F0AA0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.fxc.hlsl
index ae0a218..3505a7b 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_5b1a9b() {
+float16_t length_5b1a9b() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_5b1a9b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_5b1a9b();
+  prevent_dce.Store<float16_t>(0u, length_5b1a9b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_5b1a9b();
+  prevent_dce.Store<float16_t>(0u, length_5b1a9b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_5b1a9b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E1179C42B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.fxc.hlsl
index a0456b8..587b4e4 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001673E8E0890(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000012D40C052E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.fxc.hlsl
index 7938298..ce0558f 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_ba16d6() {
+float16_t length_ba16d6() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_ba16d6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_ba16d6();
+  prevent_dce.Store<float16_t>(0u, length_ba16d6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_ba16d6();
+  prevent_dce.Store<float16_t>(0u, length_ba16d6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_ba16d6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000274E4444CE0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.fxc.hlsl
index 46a6bf0..7f49816 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021344FCF7B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000029F7B4538D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.fxc.hlsl
index 4170b52..bfdf14f 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_c158da() {
+float16_t length_c158da() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_c158da();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_c158da();
+  prevent_dce.Store<float16_t>(0u, length_c158da());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_c158da();
+  prevent_dce.Store<float16_t>(0u, length_c158da());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_c158da();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000289360D4CE0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.fxc.hlsl
index 42ac2e7..808675b 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002791B64F300(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022D6C6A5230(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.fxc.hlsl
index 5e9a03e..5fc9851 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_6ff86f() {
+vector<float16_t, 3> log_6ff86f() {
   vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_6ff86f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_6ff86f();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log_6ff86f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_6ff86f();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log_6ff86f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_6ff86f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021479EA60D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.fxc.hlsl
index feae90a..7942afc 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022161DD3380(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022C76D64F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.fxc.hlsl
index ebad2a0..177ac27 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_8f0e32() {
+vector<float16_t, 2> log_8f0e32() {
   vector<float16_t, 2> res = (float16_t(0.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_8f0e32();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_8f0e32();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log_8f0e32());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_8f0e32();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log_8f0e32());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_8f0e32();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015FCEC864B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.fxc.hlsl
index 57f10a5..dafb114 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BC2A04F9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B5957165D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.fxc.hlsl
index ca9e213..ade13cc 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_c9f489() {
+float16_t log_c9f489() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_c9f489();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_c9f489();
+  prevent_dce.Store<float16_t>(0u, log_c9f489());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_c9f489();
+  prevent_dce.Store<float16_t>(0u, log_c9f489());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_c9f489();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B9709AE7B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.fxc.hlsl
index 30a94d0..f830783 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002097887E400(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001772E579AE0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.fxc.hlsl
index 24eeafa..b169505 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_cdbdc1() {
+vector<float16_t, 4> log_cdbdc1() {
   vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_cdbdc1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_cdbdc1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log_cdbdc1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_cdbdc1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log_cdbdc1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_cdbdc1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000157035A2730(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.fxc.hlsl
index 15cfb3c..0248d38 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000148A85CE400(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000151E1D5BB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.fxc.hlsl
index 571924e..d7b6979 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_38b478() {
+vector<float16_t, 3> log2_38b478() {
   vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_38b478();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_38b478();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log2_38b478());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_38b478();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log2_38b478());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_38b478();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AD95E04670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.fxc.hlsl
index 8e9f955..4961faf 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002678ED4FF90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020A15D809E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.fxc.hlsl
index 33b3fdb..706d3bc 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_776088() {
+vector<float16_t, 4> log2_776088() {
   vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_776088();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_776088();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log2_776088());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_776088();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log2_776088());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_776088();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028D4F8EB020(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.fxc.hlsl
index 9a29abd..7ee48d4 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027DB892E5A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000013FF8EDB420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.fxc.hlsl
index 45322ac..fe78fc3 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_8c10b3() {
+float16_t log2_8c10b3() {
   float16_t res = float16_t(0.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_8c10b3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_8c10b3();
+  prevent_dce.Store<float16_t>(0u, log2_8c10b3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_8c10b3();
+  prevent_dce.Store<float16_t>(0u, log2_8c10b3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_8c10b3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025B99D76D10(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.fxc.hlsl
index 180cfff..affc81a 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027AAB2AEB00(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022704FB9B10(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.fxc.hlsl
index 3908444..0c6111d 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_fb9f0b() {
+vector<float16_t, 2> log2_fb9f0b() {
   vector<float16_t, 2> res = (float16_t(0.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_fb9f0b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_fb9f0b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log2_fb9f0b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_fb9f0b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log2_fb9f0b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_fb9f0b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000191F52F4290(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl
index 2ebf89d..25e13fc 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000248D8D14CD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000236011F4830(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.fxc.hlsl
index 1c3fcfe..a3a24ef 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_111ac0() {
+float16_t max_111ac0() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_111ac0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_111ac0();
+  prevent_dce.Store<float16_t>(0u, max_111ac0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_111ac0();
+  prevent_dce.Store<float16_t>(0u, max_111ac0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_111ac0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012AC19ED230(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.fxc.hlsl
index cde3b9a..827dc6a 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E9C4672000(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000026A368C6190(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.fxc.hlsl
index 9ecfc3b..b954355 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_34956e() {
+vector<float16_t, 2> max_34956e() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_34956e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_34956e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, max_34956e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_34956e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, max_34956e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_34956e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023CC37F6500(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.fxc.hlsl
index 9a88a1d..b1bd362 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029D114DF560(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016E8CF5B6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.fxc.hlsl
index fe5efe6..b82ec19 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_445169() {
+vector<float16_t, 3> max_445169() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_445169();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_445169();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, max_445169());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_445169();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, max_445169());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_445169();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019C2FBD6530(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.fxc.hlsl
index 6349cf1..89d2f5e 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B34D6DF680(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002030A4BB6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.fxc.hlsl
index 9d85582..51ffef7 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_e14f2b() {
+vector<float16_t, 4> max_e14f2b() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_e14f2b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_e14f2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, max_e14f2b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_e14f2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, max_e14f2b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_e14f2b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000247C939A830(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.fxc.hlsl
index a2dd82d..508aa2e 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DC90C2F5A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022BAC1138F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.fxc.hlsl
index 90e9bb9..0f627f8 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_7c710a() {
+vector<float16_t, 4> min_7c710a() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_7c710a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_7c710a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, min_7c710a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_7c710a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, min_7c710a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_7c710a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000204E2FB6110(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.fxc.hlsl
index 903956d..e865408 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FB1435EDD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029A6339D240(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.fxc.hlsl
index 813c98d..9f8932b 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_ab0acd() {
+vector<float16_t, 3> min_ab0acd() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_ab0acd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_ab0acd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, min_ab0acd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_ab0acd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, min_ab0acd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_ab0acd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FADDC65AF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.fxc.hlsl
index 5f21b52..cd63b3f 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F427EC5320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D078488FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.fxc.hlsl
index 94817b8..5909933 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_ac84d6() {
+float16_t min_ac84d6() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_ac84d6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_ac84d6();
+  prevent_dce.Store<float16_t>(0u, min_ac84d6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_ac84d6();
+  prevent_dce.Store<float16_t>(0u, min_ac84d6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_ac84d6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020D1A404890(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.fxc.hlsl
index 9805f63..ed3bdc8 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013E48CCF020(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002311C1D61F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.fxc.hlsl
index fcd37ac..089627b 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_e780f9() {
+vector<float16_t, 2> min_e780f9() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_e780f9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_e780f9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, min_e780f9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_e780f9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, min_e780f9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_e780f9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB3AD664D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.fxc.hlsl
index 362bcfe..027346e 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000251EF6CEDD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000011D255ED4E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.fxc.hlsl
index ff551e2..688b009 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_38cbbb() {
+float16_t mix_38cbbb() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_38cbbb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_38cbbb();
+  prevent_dce.Store<float16_t>(0u, mix_38cbbb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_38cbbb();
+  prevent_dce.Store<float16_t>(0u, mix_38cbbb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_38cbbb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000205AD2D6C80(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.fxc.hlsl
index 7b51174..321d50a 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000237E87EFA70(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000014D2FAACA80(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.fxc.hlsl
index 3159dda..529276a 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_63f2fd() {
+vector<float16_t, 3> mix_63f2fd() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_63f2fd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_63f2fd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_63f2fd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_63f2fd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_63f2fd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_63f2fd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025AFE4B6510(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.fxc.hlsl
index f0c35c0..0bcc0d0 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028AD0A2F930(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000273C9C2BFE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.fxc.hlsl
index ba85375..5016726 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_98ee3e() {
+vector<float16_t, 2> mix_98ee3e() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_98ee3e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_98ee3e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_98ee3e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_98ee3e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_98ee3e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_98ee3e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000219CE9C6560(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.fxc.hlsl
index ad771623..f9ea770 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000208CDF5E5B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022086328F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.fxc.hlsl
index 341b1c7..2968aac 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_c1aec6() {
+vector<float16_t, 3> mix_c1aec6() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_c1aec6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_c1aec6();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_c1aec6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_c1aec6();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_c1aec6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_c1aec6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000250AFB464D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.fxc.hlsl
index 6b8b762..0267ad7 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002464F58E550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017EBD5C3EF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.fxc.hlsl
index d2771cc..ab67cda 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_e46a83() {
+vector<float16_t, 2> mix_e46a83() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_e46a83();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_e46a83();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_e46a83());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_e46a83();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_e46a83());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_e46a83();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020622DDD2D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.fxc.hlsl
index 4e2d530..3d7a687 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A6567B7320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000270E9464E70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.fxc.hlsl
index 2fbc091..26a4931 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_ee2468() {
+vector<float16_t, 4> mix_ee2468() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_ee2468();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_ee2468();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_ee2468());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_ee2468();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_ee2468());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_ee2468();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A89AE56D00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.fxc.hlsl
index 1e4a535..5f49ca2 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002DF739D5070(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B0D65B5940(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.fxc.hlsl
index bc67507..447080b 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_f1a543() {
+vector<float16_t, 4> mix_f1a543() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_f1a543();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_f1a543();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_f1a543());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_f1a543();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_f1a543());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_f1a543();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F26AF4B4E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.fxc.hlsl
index 09ab7a0..6d597d9 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000227C575E0F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CB62775110(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.fxc.hlsl
index ab61f99..56b33ea 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   modf_result_vec3_f16 res = {(float16_t(-0.5h)).xxx, (float16_t(-1.0h)).xxx};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_45005f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_45005f();
   return;
@@ -34,3 +18,27 @@
   modf_45005f();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_45005f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AAC2B54290(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.fxc.hlsl
index b4748be..588f960 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002683B5CF3F0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000231CA79CFC0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.fxc.hlsl
index 47ce051..53c878f 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   modf_result_f16 res = {float16_t(-0.5h), float16_t(-1.0h)};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_8dbbbf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_8dbbbf();
   return;
@@ -34,3 +18,27 @@
   modf_8dbbbf();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_8dbbbf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000238945DFDA0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl
index f4a03e5..9fec151 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000197250DEC90(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000255E3565230(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.fxc.hlsl
index bce3ed9..86102fb 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   modf_result_vec4_f16 res = {(float16_t(-0.5h)).xxxx, (float16_t(-1.0h)).xxxx};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_995934();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_995934();
   return;
@@ -34,3 +18,27 @@
   modf_995934();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_995934();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A229194670(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.fxc.hlsl
index 5584449..dadc06a 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CB5D69FBC0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F73CC58B40(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.fxc.hlsl
index fe02442..bfdae38 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.fxc.hlsl
@@ -8,22 +8,6 @@
   modf_result_vec2_f16 res = {(float16_t(-0.5h)).xx, (float16_t(-1.0h)).xx};
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_a545b9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_a545b9();
   return;
@@ -34,3 +18,27 @@
   modf_a545b9();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_a545b9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E9793E62A0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.fxc.hlsl
index 477096d..6755509 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.fxc.hlsl
@@ -42,5 +42,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016CC669F3C0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022B93E0B030(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.fxc.hlsl
index 715a498..5dcbb25 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void normalize_39d5ec() {
+vector<float16_t, 3> normalize_39d5ec() {
   vector<float16_t, 3> res = (float16_t(0.5771484375h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  normalize_39d5ec();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  normalize_39d5ec();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, normalize_39d5ec());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  normalize_39d5ec();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, normalize_39d5ec());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = normalize_39d5ec();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022ECA488F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl
index ebede6b..23a8080 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E1E25BEA80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000229070361F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.fxc.hlsl
index e041fac..a3a0e7b 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void normalize_7990f3() {
+vector<float16_t, 2> normalize_7990f3() {
   vector<float16_t, 2> res = (float16_t(0.70703125h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  normalize_7990f3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  normalize_7990f3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, normalize_7990f3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  normalize_7990f3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, normalize_7990f3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = normalize_7990f3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002ED696D5DA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.fxc.hlsl
index c193310..85b49c8 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025EEB8EFF70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DC34814F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.fxc.hlsl
index 95f591a..338382d 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void normalize_b8cb8d() {
+vector<float16_t, 4> normalize_b8cb8d() {
   vector<float16_t, 4> res = (float16_t(0.5h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  normalize_b8cb8d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  normalize_b8cb8d();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, normalize_b8cb8d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  normalize_b8cb8d();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, normalize_b8cb8d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = normalize_b8cb8d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B0546BBBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl
index b0be826..ed14834 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002765EBDE510(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C546396220(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.fxc.hlsl
index 9956e02..0e9206f 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_4f33b2() {
+vector<float16_t, 4> pow_4f33b2() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_4f33b2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_4f33b2();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, pow_4f33b2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_4f33b2();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, pow_4f33b2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_4f33b2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000241EF498490(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.fxc.hlsl
index 5c96650..456c1db 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D0F0C3E2E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A0750338C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.fxc.hlsl
index 195f878..a6a1c47 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_ce9ef5() {
+float16_t pow_ce9ef5() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_ce9ef5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_ce9ef5();
+  prevent_dce.Store<float16_t>(0u, pow_ce9ef5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_ce9ef5();
+  prevent_dce.Store<float16_t>(0u, pow_ce9ef5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_ce9ef5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A015C64FC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl
index 5866401..addfc59 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FC8473F4A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001CA4CF761F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.fxc.hlsl
index 1f0f65a..28f2b60 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_f37b25() {
+vector<float16_t, 2> pow_f37b25() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_f37b25();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_f37b25();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, pow_f37b25());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_f37b25();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, pow_f37b25());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_f37b25();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FF89BBFC90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.fxc.hlsl
index a27c13f..e77d7f1 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000299051CFBE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000165EBE5B3F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.fxc.hlsl
index 7ec1d2a..96b30a5 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_fa5429() {
+vector<float16_t, 3> pow_fa5429() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_fa5429();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_fa5429();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, pow_fa5429());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_fa5429();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, pow_fa5429());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_fa5429();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C66CEC5DC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.fxc.hlsl
index ae28ebd..4e59495 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000223D6AF0420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000164FDBC8410(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl
index bf92834..23354c1 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_0464d1());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029A91B64A90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl
index 427c73a..13dab0c 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_0464d1());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002961FEB6DA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl
index 92a2518..e24d428 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_0639ea()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FA88846D30(4,13-33): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl
index 131acfa..90512ad 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_0639ea()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000239AB1BBC80(4,13-33): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl
index 35787a1..5c127ba 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0cc513()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CE1E5C5680(4,16-45): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl
index 0870451..dc00651 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0cc513()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025CBB6EAE90(4,16-45): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl
index e07f66f..4385b75 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0e0e6e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000220459F7A70(4,14-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl
index 7a95b72..7c554dd 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0e0e6e()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029D092AA420(4,14-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl
index 3cd8c4c..069a491 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_2d0b7d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001148452DD40(4,15-43): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl
index 4b61ccf..aa4a791 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, quadBroadcast_2d0b7d());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000296D0C5F860(4,15-43): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.fxc.hlsl
index 0475ecc..ede4521 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_355db5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000283982F46C0(4,16-44): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl
index feadca4..1b972d8 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_355db5()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001880A2CFB80(4,16-44): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl
index 8fb05f21..31721d8 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_3c3824());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D74AFD46C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl
index 502aa25..f1f83c1 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_3c3824());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015D34708DE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl
index 039118d..c05ff65 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_4d9898());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000261F70A4700(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl
index 86329d0..8f4255b 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_4d9898());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027ADB5946B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.fxc.hlsl
index a875264..4456a2b 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_641316()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027583236910(4,15-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl
index d937563..3bff9b8 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, quadBroadcast_641316());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022027F1FB80(4,15-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.fxc.hlsl
index 21a22e5..8dc19f4 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_704803()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B8ECAF9C10(4,14-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl
index 6cabe82..756e806 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_704803()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028B3CE1D520(4,14-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.fxc.hlsl
index fd86cec..1da586b 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_76f499()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002228DD85680(4,14-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl
index de1b947..0a30f31 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_76f499()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027A4F83A420(4,14-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.fxc.hlsl
index c9dc3f6..79d3f9b 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_78129b());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001901D7061F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl
index e943315..c6e1cb8 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_78129b());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214151646B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.fxc.hlsl
index 77ede2a..f6c4d80 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_796753());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000223E0924700(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl
index 29caeee..67a8747 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_796753());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019F87C861E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.fxc.hlsl
index e7ff98e..14f1fe4 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_820991()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001275D396A00(4,16-46): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl
index e6d76d7..c5e72f9 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_820991()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019A9FC8FB80(4,16-46): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl
index 7db859c..15662b4 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_960c6b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CB7B8BFED0(4,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl
index 2ccad8d..bd0864a 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_960c6b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027AEED3F6E0(4,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl
index f58f282..db1e765 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_9d802c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025CC04546C0(4,16-45): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl
index 62abb74..73e4c7f 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_9d802c()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AA22DEC2F0(4,16-45): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl
index 04ce9a9..58aa41b 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_a2d2b4()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001418F19AF60(4,14-34): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl
index adf330d..097f362 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, quadBroadcast_a2d2b4());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000131495DA8F0(4,14-34): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl
index db59270..7152081 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_ae401e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000246267DC190(4,15-42): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl
index 08876a1..6796768 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, quadBroadcast_ae401e());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E3A498FB60(4,15-42): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.fxc.hlsl
index 0a55412..aa1151b 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_b68331()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001422EF66A90(4,15-42): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl
index fe631fe..dd416ce 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, quadBroadcast_b68331());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022034AA6550(4,15-42): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl
index e45abb3..480a266 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_bed00b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000232144E89B0(4,14-41): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl
index 2c0afb7..fd72b4d 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_bed00b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000223DBE0F860(4,14-41): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl
index 9c4a9c4..55676ba 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_c0e704()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000271D510D0A0(4,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl
index dc4d251..833c201 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_c0e704()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025BDCE2C2F0(4,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl
index 29de5d4..0c16970 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cd3624()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FC5B2D9E30(4,16-44): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl
index 6ff0ed8..bb44aa2 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cd3624()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025192BAFB20(4,16-44): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl
index bde346e..5d7645a 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_cebc6a());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EA4E989FF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl
index 4a247d4..aaa4f87 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_cebc6a());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000250C32446D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl
index 6973830..69335a0 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cfbf48()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016BEA5A6A90(4,16-43): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl
index 8607af7..b1b8fd9 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cfbf48()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C4830746E0(4,16-43): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl
index 273502c..2447c85 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_e6d39d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021FA99677A0(4,15-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl
index ffd0d86..b836924 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_e6d39d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AD55267630(4,15-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl
index 25e2173..d813cf65 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_e6d948()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D833ABA8A0(4,14-35): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl
index 3ff1e1b..446749d 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, quadBroadcast_e6d948());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000251EEBBBC80(4,14-35): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl
index 48e1679..37fe153 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_e7c301());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000189767646C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl
index fe339cc..ffa7504 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_e7c301());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016952B9B720(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl
index c752bf8..79f3584 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_ef7d5d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CE61F04700(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl
index 1004505..9b5280d 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_ef7d5d());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AAB1B5C230(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl
index 929e9fe..90a3176 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_f1e8ec()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A81EE087F0(4,15-41): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl
index 6b2de11..0e72366 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, quadBroadcast_f1e8ec());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000261E514BE80(4,15-41): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl
index aacccc9..119a030 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_f5f923()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026AB8EF46A0(4,14-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl
index 87c3166..1dca707 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_f5f923()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029363DEC2F0(4,14-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.fxc.hlsl
index 6b23804..713af2d 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_f60448()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025E088BD420(4,15-41): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl
index 7ee8efb..654d943 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, quadBroadcast_f60448());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025D64CCE0F0(4,15-41): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl
index bd4dc2d..5cc711c 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_f9d579()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E02832FA00(4,13-32): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl
index cef1f25..6562b8a 100644
--- a/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_f9d579()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000284B767F6E0(4,13-32): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl
index 795f4a8..bf63094 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapDiagonal_15ac75());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015C4D48BFC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl
index 1ba078f..acba55e 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapDiagonal_15ac75());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021B79714CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl
index 5bdb0ef..a3c1eb5 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapDiagonal_2be5e7());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002DF595D8D50(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl
index 000d799..6ab7480 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapDiagonal_2be5e7());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000239F03B4EF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl
index 42e2a76..acd0db4 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_331804()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022E5E12B830(4,16-50): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl
index 031c449..ea58c16 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_331804()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B1520B8600(4,16-50): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl
index 073bb06..82fa559 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_348173()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027D1D5B0230(4,15-45): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl
index e093560..a0a9d82 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, quadSwapDiagonal_348173());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B91A25CE10(4,15-45): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl
index 5b94f27..3c697e7 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_486196()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024358C15A50(4,15-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl
index 0107499..c51a633 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_486196()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002047B7DA360(4,15-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl
index 3b35454..d5f4711 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_730e40()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020B31B80850(4,14-39): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl
index 3a93f97..31df188 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, quadSwapDiagonal_730e40());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AC0804FEE0(4,14-39): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl
index 5464fbe..a89b8e6 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_8077c8()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CCF255FDA0(4,16-48): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl
index af7706b..7c5a853 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_8077c8()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BAA80946C0(4,16-48): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl
index 8675ff0..43d4937 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_856536()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019484F476C0(4,15-46): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl
index fb4be26..04d9bc8 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, quadSwapDiagonal_856536());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018EBF6146B0(4,15-46): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl
index b2ce2d7..ce6ff04 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_9ccb38()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014278CBAFA0(4,13-37): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl
index 713a44d..c128735 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_9ccb38()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AB639FFE80(4,13-37): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl
index df39dd1..898b987 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_a090b0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000270DF86A410(4,14-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl
index fa4be0a..182f3c5 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_a090b0()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F47D2FFDE0(4,14-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl
index 291275b..cbfcebb 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_a665b1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026F1498A5A0(4,14-45): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl
index c3b3869..cef349d 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_a665b1()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F83F5DF880(4,14-45): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl
index c0d2297..751a7da 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_a82e1d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002027A2D4690(4,14-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl
index a080bdc..3f916ad 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_a82e1d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022B22E98600(4,14-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl
index b75aef0..d1bf908 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapDiagonal_af19a5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000220B28346C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl
index 5f55a68..913231c 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapDiagonal_af19a5());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C77DE4CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl
index 130fed1..aa9c39c 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_b905fc()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D0EA564690(4,16-49): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl
index 5f2bab2..91478ad 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_b905fc()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024359268600(4,16-49): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl
index ac99418..6e07fd0 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_c31636()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024A9C144690(4,15-47): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl
index 30e5efc..3bfb5ff 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, quadSwapDiagonal_c31636());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001620AD34E80(4,15-47): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl
index 3692dc7..465bc88 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapDiagonal_e4bec8());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000225F43FC970(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl
index 2c23281..6195214 100644
--- a/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapDiagonal_e4bec8());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017B83C34CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.fxc.hlsl
index d0756ac..16f9217 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapX_02834c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028CCC2246D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl
index baec144..59732c6 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapX_02834c());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001851FAB46A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.fxc.hlsl
index 5098d8c..70e5be2 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_053f3b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027E71A5C2D0(4,14-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl
index 5015f25..0b1a9f9 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_053f3b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002275AAEA5B0(4,14-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl
index 1cf6efb..15403a7 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_07f1fc()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000242057ADBC0(4,15-40): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl
index bc4e19c..aede2de 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, quadSwapX_07f1fc());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E5421DF850(4,15-40): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.fxc.hlsl
index b718e42..782f8fe 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_150d6f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F17CCD60E0(4,16-42): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl
index 1e3ee38..b644365 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_150d6f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020DB93AFB60(4,16-42): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl
index 208a298..812bf67 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_19f8ce()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028CB7D9D850(4,15-38): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl
index d331d5a..ad6c6e7 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, quadSwapX_19f8ce());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A70190FB80(4,15-38): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.fxc.hlsl
index abc5946..98678ea 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_1e1086()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AE57949270(4,13-30): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl
index 599a853..bd967dc 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_1e1086()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019960E3A4F0(4,13-30): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.fxc.hlsl
index b6fb28c..c355a7e 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_69af6a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000227AB84E100(4,16-43): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl
index 0731839..6bb676a 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_69af6a()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002871BB74690(4,16-43): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.fxc.hlsl
index 6ed03e6..eeaa9f5 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_8203ad()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A5EA135640(4,14-32): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl
index 5de71a6..97ea451 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, quadSwapX_8203ad());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F0271BA4F0(4,14-32): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.fxc.hlsl
index 6e8b4f8..60935b4 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_879738()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029E88224EC0(4,16-41): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl
index 7e4720a..87ab579 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_879738()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000178E1D0FB60(4,16-41): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.fxc.hlsl
index ac4a89e..4e8fc20 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_9bea80()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002460DB49A60(4,15-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl
index 714787c..79df968 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_9bea80()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CA31405360(4,15-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.fxc.hlsl
index dd0b4d5..a9b2405 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapX_a4e103());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B5F57661F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl
index 7ce77ba..a2be2cf 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapX_a4e103());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027B57C53FF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl
index 6fc0210..e4b4bb9 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_b1a5fe()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B799891A10(4,14-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl
index 456db0b..6e24a34 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_b1a5fe()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018A218D60F0(4,14-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.fxc.hlsl
index aaaff45..ff489a3 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapX_bc2013());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029E86107F70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl
index da74984..2655ee5 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapX_bc2013());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000160F44A5F00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl
index d766eb7..3b4b3a2 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_bddb9f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206601FAFE0(4,15-39): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl
index c98c509..30ee5d67 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, quadSwapX_bddb9f());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014F76880650(4,15-39): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.fxc.hlsl
index b1aa6bc..4e83144 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapX_d60cec());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027950857040(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl
index 80d4eb7..0653850 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapX_d60cec());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A11B5F4FB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl
index 6fd95d7..e8d6353 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_edfa1f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000010B181FBCE0(4,14-38): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl
index 3c94ef7..488e7bc 100644
--- a/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_edfa1f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E4C040DC50(4,14-38): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.fxc.hlsl
index 1b53fba..6d0e6ac 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_06a67c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000212426A60E0(4,15-39): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl
index 72aecf6..0b626fb 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, quadSwapY_06a67c());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002407F11F830(4,15-39): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.fxc.hlsl
index dd64bad..f89434f 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_0c4938()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025266520890(4,14-32): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl
index 3fe2af4..3c48d5f2 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, quadSwapY_0c4938());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000154558860C0(4,14-32): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl
index 04ff44b..c623e1a 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_0d05a8()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AB235DACE0(4,14-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl
index 5ac9f13..d9df62a 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_0d05a8()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023E187DF6E0(4,14-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl
index dd80016..e843d75 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_14bb9a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D15A056BF0(4,14-38): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl
index b3469ec..d9c3337 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_14bb9a()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029DD4E1C2D0(4,14-38): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl
index 2416f7a..41ba7b1 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_1f1a06()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000266DDE8BD90(4,16-41): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl
index dfde4ce..20f2687 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_1f1a06()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025A4EC65CD0(4,16-41): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.fxc.hlsl
index a35e569..ede0b95 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapY_264908());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025938AB1E50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl
index e931439..c73f813 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapY_264908());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002541DB44F50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl
index bbe37c4..146d846 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapY_5b2e67());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002412A55F920(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl
index aa707db..b65977e 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapY_5b2e67());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AE3DBCFE10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl
index 6af0a45..bdbe66b 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_6f6bc9()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ED55396BD0(4,15-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl
index ffb46b0..d21fbb3 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_6f6bc9()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000154828EFB60(4,15-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.fxc.hlsl
index 6f8c2c5..7606dd8 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapY_9277e9());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A448AB5FC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl
index 4bf24e7..e311409 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapY_9277e9());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029774C8B0C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl
index eaace97..c47396b 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_94ab6d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021EAA0E5660(4,13-30): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl
index 7382420..cdd27cc 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_94ab6d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000277BD745590(4,13-30): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl
index dd069e9..3ebd7a8 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_a27e1c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001547C5AC2D0(4,15-38): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl
index feeb9d4..b034147 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, quadSwapY_a27e1c());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F6B2FCC2D0(4,15-38): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl
index 799eef4..e33261c 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapY_a50fcb());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A42213FE70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl
index b0bb8c9..5d2ef58 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapY_a50fcb());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000241E8906EA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl
index da25891..271ee6d 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_b9d9e7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021096454540(4,16-43): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl
index 0485f39..efdd6f6 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_b9d9e7()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B5DAB05910(4,16-43): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.fxc.hlsl
index 4aabf0e..4535ced 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_bb697b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000155388960E0(4,15-40): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl
index 1d5c49b..4213314 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, quadSwapY_bb697b());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BD0911F850(4,15-40): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.fxc.hlsl
index 69d7da0..c05315d 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_be4e72()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002228A0AFB20(4,14-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl
index 5567c2e..9d53df3 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_be4e72()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B4E0DD5360(4,14-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl
index e684a87..3a94684 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_d1ab4d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000243757EB500(4,16-42): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl
index b5fdea52..6d174ae 100644
--- a/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_d1ab4d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014F1A465CD0(4,16-42): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.fxc.hlsl
index 4c3e95a..cadc440 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_208fd9() {
+float16_t radians_208fd9() {
   float16_t res = float16_t(0.0174407958984375h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_208fd9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_208fd9();
+  prevent_dce.Store<float16_t>(0u, radians_208fd9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_208fd9();
+  prevent_dce.Store<float16_t>(0u, radians_208fd9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_208fd9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000236D3414FE0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.fxc.hlsl
index 17996fe..09d2db6 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026CC36CF4E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002069F24F010(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.fxc.hlsl
index b682c5d..21ab262 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_44f20b() {
+vector<float16_t, 4> radians_44f20b() {
   vector<float16_t, 4> res = (float16_t(0.0174407958984375h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_44f20b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_44f20b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, radians_44f20b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_44f20b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, radians_44f20b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_44f20b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BDE1014CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.fxc.hlsl
index e140516..d2cb5ac 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022EB28D1420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000234835138C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.fxc.hlsl
index 38fa5d1..b66813d 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_7ea4c7() {
+vector<float16_t, 3> radians_7ea4c7() {
   vector<float16_t, 3> res = (float16_t(0.0174407958984375h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_7ea4c7();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_7ea4c7();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, radians_7ea4c7());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_7ea4c7();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, radians_7ea4c7());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_7ea4c7();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025308D25BA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl
index efeef26..8b2cf3f 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025B165EF9E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002099E963D00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.fxc.hlsl
index b6e13da..21975a9 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_fbacf0() {
+vector<float16_t, 2> radians_fbacf0() {
   vector<float16_t, 2> res = (float16_t(0.0174407958984375h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_fbacf0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_fbacf0();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, radians_fbacf0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_fbacf0();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, radians_fbacf0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_fbacf0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C7F1AF9AE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.fxc.hlsl
index f1898de..3fc375c 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CA4EF2FF90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D04D3B93B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.fxc.hlsl
index 26e4172..944f297 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void reflect_310de5() {
+vector<float16_t, 4> reflect_310de5() {
   vector<float16_t, 4> res = (float16_t(-7.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  reflect_310de5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  reflect_310de5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, reflect_310de5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  reflect_310de5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, reflect_310de5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = reflect_310de5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026756F6AEA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.fxc.hlsl
index 8e7a441..d74256e 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025FAD7D8200(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000252862650F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.fxc.hlsl
index c3077d4..e6f9b1e 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void reflect_61ca21() {
+vector<float16_t, 3> reflect_61ca21() {
   vector<float16_t, 3> res = (float16_t(-5.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  reflect_61ca21();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  reflect_61ca21();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, reflect_61ca21());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  reflect_61ca21();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, reflect_61ca21());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = reflect_61ca21();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EBA5546600(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.fxc.hlsl
index e171f25..a92819f 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E0A0797040(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016664A04BF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.fxc.hlsl
index 5e26a4b..eeeb494 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void reflect_bb15ac() {
+vector<float16_t, 2> reflect_bb15ac() {
   vector<float16_t, 2> res = (float16_t(-3.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  reflect_bb15ac();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  reflect_bb15ac();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, reflect_bb15ac());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  reflect_bb15ac();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, reflect_bb15ac());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = reflect_bb15ac();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D2F1194920(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl
index 9c01155..538b0a4 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ACA4EA0410(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A78AFD48E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.fxc.hlsl
index baa2d1e..be70572 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void refract_0594ba() {
+vector<float16_t, 4> refract_0594ba() {
   vector<float16_t, 4> res = (float16_t(-7.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  refract_0594ba();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  refract_0594ba();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, refract_0594ba());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  refract_0594ba();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, refract_0594ba());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = refract_0594ba();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002815E466DD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.fxc.hlsl
index 2cea07a..e26a6f8 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F377BCE6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001487D4950F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.fxc.hlsl
index fc21834..eaa4209 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void refract_570cb3() {
+vector<float16_t, 2> refract_570cb3() {
   vector<float16_t, 2> res = (float16_t(-3.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  refract_570cb3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  refract_570cb3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, refract_570cb3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  refract_570cb3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, refract_570cb3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = refract_570cb3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E7BF23A300(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.fxc.hlsl
index 2e62642..84e6ec3 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021A3F2BF9E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F0E0D98FE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.fxc.hlsl
index 386a536..ea1b5ca 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void refract_8984af() {
+vector<float16_t, 3> refract_8984af() {
   vector<float16_t, 3> res = (float16_t(-5.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  refract_8984af();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  refract_8984af();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, refract_8984af());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  refract_8984af();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, refract_8984af());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = refract_8984af();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012A4228D460(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.fxc.hlsl
index 47935f6..06ca55f 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C546690480(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000012231D193A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.fxc.hlsl
index 17721e0..6281306 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_9078ef() {
+float16_t round_9078ef() {
   float16_t res = float16_t(4.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_9078ef();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_9078ef();
+  prevent_dce.Store<float16_t>(0u, round_9078ef());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_9078ef();
+  prevent_dce.Store<float16_t>(0u, round_9078ef());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_9078ef();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DC17553CF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.fxc.hlsl
index f102cb6..8a99183 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FEC3ABFAF0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000215C031D220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.fxc.hlsl
index c5f3299..b5b21bd 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_d87e84() {
+vector<float16_t, 2> round_d87e84() {
   vector<float16_t, 2> res = (float16_t(4.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_d87e84();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_d87e84();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, round_d87e84());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_d87e84();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, round_d87e84());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_d87e84();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000198B3113CA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.fxc.hlsl
index c82317b..675d8e9 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022373ED5550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027C13FB9500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.fxc.hlsl
index 5c6e91b..000f336 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_e1bba2() {
+vector<float16_t, 3> round_e1bba2() {
   vector<float16_t, 3> res = (float16_t(4.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_e1bba2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_e1bba2();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, round_e1bba2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_e1bba2();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, round_e1bba2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_e1bba2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F25203BA00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.fxc.hlsl
index eb61d30..d259ad8 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015EB4F03FB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A64340B720(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.fxc.hlsl
index cb13cd1..4f36be0 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_f665b5() {
+vector<float16_t, 4> round_f665b5() {
   vector<float16_t, 4> res = (float16_t(4.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_f665b5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_f665b5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, round_f665b5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_f665b5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, round_f665b5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_f665b5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025F30A14590(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.fxc.hlsl
index 9ccfed1..0933e43 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000279CF62E6A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F42B9BDFA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.fxc.hlsl
index 0bd15ae..a0a2538 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_462535() {
+vector<float16_t, 3> saturate_462535() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_462535();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_462535();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, saturate_462535());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_462535();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, saturate_462535());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_462535();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002860A1F65C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.fxc.hlsl
index 6b0274a..34cefe3 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021137B6FD60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019BE32745B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.fxc.hlsl
index c020ac9..66cea89 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_cd2028() {
+vector<float16_t, 2> saturate_cd2028() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_cd2028();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_cd2028();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, saturate_cd2028());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_cd2028();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, saturate_cd2028());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_cd2028();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017CCAD1C4F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.fxc.hlsl
index 4a01198..a974e7c 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C47A4F960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FEBEED93A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.fxc.hlsl
index a044fab..ba182c0 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_dcde71() {
+vector<float16_t, 4> saturate_dcde71() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_dcde71();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_dcde71();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, saturate_dcde71());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_dcde71();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, saturate_dcde71());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_dcde71();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002430B6E6D90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.fxc.hlsl
index de20090..694dcdd 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002323433EC10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000288B3F29AD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.fxc.hlsl
index 941b0ab..3b5d27c 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_e8df56() {
+float16_t saturate_e8df56() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_e8df56();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_e8df56();
+  prevent_dce.Store<float16_t>(0u, saturate_e8df56());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_e8df56();
+  prevent_dce.Store<float16_t>(0u, saturate_e8df56());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_e8df56();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B088B34CB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.fxc.hlsl
index cdc880c..1972699 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CBFA79E6E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000121DF896220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.fxc.hlsl
index 4539c94..5d4be7b 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_10e73b() {
+float16_t select_10e73b() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_10e73b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_10e73b();
+  prevent_dce.Store<float16_t>(0u, select_10e73b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_10e73b();
+  prevent_dce.Store<float16_t>(0u, select_10e73b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_10e73b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D19570ACC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.fxc.hlsl
index 12dace62..029c77c 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A5E0843D90(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000208699852D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.fxc.hlsl
index 830536e..6bdf365 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_1ada2a() {
+vector<float16_t, 3> select_1ada2a() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_1ada2a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_1ada2a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_1ada2a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_1ada2a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_1ada2a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_1ada2a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014600DF5960(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.fxc.hlsl
index 35d467e..9484630 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002496EEB7690(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018DC8873B80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.fxc.hlsl
index e2e4374..dc87659 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_53d518() {
+vector<float16_t, 3> select_53d518() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_53d518();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_53d518();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_53d518());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_53d518();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_53d518());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_53d518();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AADD72ACB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.fxc.hlsl
index 2750894..a2a7e08 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D97A5AEB50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014A2D185590(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.fxc.hlsl
index 219a6bc..d799d38 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_830dd9() {
+vector<float16_t, 4> select_830dd9() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_830dd9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_830dd9();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_830dd9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_830dd9();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_830dd9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_830dd9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001808E5F45C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.fxc.hlsl
index fd7e8dd..1d32ff4 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025196BE04A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000265CFE98F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.fxc.hlsl
index 6a5084f..eb73f2a 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_86f9bd() {
+vector<float16_t, 2> select_86f9bd() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_86f9bd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_86f9bd();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_86f9bd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_86f9bd();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_86f9bd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_86f9bd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021A1F280960(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.fxc.hlsl
index d225290..f9e980d 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015A5B52FA00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000011C99AF8FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.fxc.hlsl
index 6a0e16d..5e374ed 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_a081f1() {
+vector<float16_t, 4> select_a081f1() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_a081f1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_a081f1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_a081f1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_a081f1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_a081f1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_a081f1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027485954290(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.fxc.hlsl
index a82e067..408f7fa 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001904F65F230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000248DE949EB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.fxc.hlsl
index fad58aa..4e360c0 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_ed7c13() {
+vector<float16_t, 2> select_ed7c13() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_ed7c13();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_ed7c13();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_ed7c13());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_ed7c13();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_ed7c13());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_ed7c13();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EACA91D550(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.fxc.hlsl
index 2213961..530fa29 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002899CBB7390(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000287BA440140(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.fxc.hlsl
index e21372c..85dada3 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_160933() {
+vector<float16_t, 4> sign_160933() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_160933();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_160933();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sign_160933());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_160933();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sign_160933());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_160933();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D10459BB70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.fxc.hlsl
index d7da0b85..1efb89a 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021ECE61DA60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001757D6C38B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.fxc.hlsl
index e6179e3..162ef55 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_5d283a() {
+vector<float16_t, 3> sign_5d283a() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_5d283a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_5d283a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sign_5d283a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_5d283a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sign_5d283a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_5d283a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015146A86670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.fxc.hlsl
index 51d0fb0..3a2b69d 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021BC075F960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002631C749EE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.fxc.hlsl
index 350776b..4a291a6 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_7c85ea() {
+float16_t sign_7c85ea() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_7c85ea();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_7c85ea();
+  prevent_dce.Store<float16_t>(0u, sign_7c85ea());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_7c85ea();
+  prevent_dce.Store<float16_t>(0u, sign_7c85ea());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_7c85ea();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9C167B8B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.fxc.hlsl
index c546c9e..f0d2868 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002613C00EEA0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000267975342D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.fxc.hlsl
index cda37448..f99c804 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_ccdb3c() {
+vector<float16_t, 2> sign_ccdb3c() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_ccdb3c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_ccdb3c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sign_ccdb3c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_ccdb3c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sign_ccdb3c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_ccdb3c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002222B98E350(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl
index aa5c067..cbc125f 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002156E98EB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024C0BB2A180(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.fxc.hlsl
index abbd064..f39db04 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_2c903b() {
+vector<float16_t, 3> sin_2c903b() {
   vector<float16_t, 3> res = (float16_t(0.99951171875h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_2c903b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_2c903b();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sin_2c903b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_2c903b();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sin_2c903b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_2c903b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000170EA6964A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.fxc.hlsl
index f0d4fa4..2546914 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C5CCC55550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022B7B804000(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.fxc.hlsl
index a811fae..75c15ff 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_3cca11() {
+vector<float16_t, 2> sin_3cca11() {
   vector<float16_t, 2> res = (float16_t(0.99951171875h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_3cca11();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_3cca11();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sin_3cca11());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_3cca11();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sin_3cca11());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_3cca11();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013DA2491C00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.fxc.hlsl
index cf1ff97..07e9f54 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000199B9482500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025A4D7B0820(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.fxc.hlsl
index 128cdc6..2895ca1 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_5c0712() {
+vector<float16_t, 4> sin_5c0712() {
   vector<float16_t, 4> res = (float16_t(0.99951171875h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_5c0712();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_5c0712();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sin_5c0712());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_5c0712();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sin_5c0712());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_5c0712();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BCF51F5080(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.fxc.hlsl
index 634f063..80e8bf9 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BE2FC8FDC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002201F3D38B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.fxc.hlsl
index 36c79c8..0add130 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_66a59f() {
+float16_t sin_66a59f() {
   float16_t res = float16_t(0.99951171875h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_66a59f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_66a59f();
+  prevent_dce.Store<float16_t>(0u, sin_66a59f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_66a59f();
+  prevent_dce.Store<float16_t>(0u, sin_66a59f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_66a59f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D0F2DC6790(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.fxc.hlsl
index 0bd9661..7a2b048 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B225B1ED80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002957A10ABA0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.fxc.hlsl
index 9ea2818..de917e3 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_0908c1() {
+vector<float16_t, 3> sinh_0908c1() {
   vector<float16_t, 3> res = (float16_t(1.1748046875h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_0908c1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_0908c1();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sinh_0908c1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_0908c1();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sinh_0908c1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_0908c1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016D9F4B65C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.fxc.hlsl
index 3b9b23c..7a3e1b4 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021DD58CF960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ECF1E75230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.fxc.hlsl
index 1f20488..070ca07 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_69cce2() {
+float16_t sinh_69cce2() {
   float16_t res = float16_t(1.1748046875h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_69cce2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_69cce2();
+  prevent_dce.Store<float16_t>(0u, sinh_69cce2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_69cce2();
+  prevent_dce.Store<float16_t>(0u, sinh_69cce2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_69cce2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002477B585BA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.fxc.hlsl
index 4c37ea7..10b96b5 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013BD8B20F80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002F6EBEC56C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.fxc.hlsl
index 5775ba3..32c1ed0 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_924f19() {
+vector<float16_t, 2> sinh_924f19() {
   vector<float16_t, 2> res = (float16_t(1.1748046875h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_924f19();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_924f19();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sinh_924f19());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_924f19();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sinh_924f19());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_924f19();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FD92CC4690(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.fxc.hlsl
index 77b0367..db7263d 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026E29FA0B00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000125801BDF60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.fxc.hlsl
index 744c9c3..5aba862 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_ba7e25() {
+vector<float16_t, 4> sinh_ba7e25() {
   vector<float16_t, 4> res = (float16_t(1.1748046875h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_ba7e25();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_ba7e25();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sinh_ba7e25());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_ba7e25();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sinh_ba7e25());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_ba7e25();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AAE7AD6620(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl
index 295ee8f..e822824 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FC68B2E9E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BFDEF450C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.fxc.hlsl
index 015d358..48b42cb 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_12c031() {
+vector<float16_t, 2> smoothstep_12c031() {
   vector<float16_t, 2> res = (float16_t(0.5h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_12c031();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_12c031();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, smoothstep_12c031());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_12c031();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, smoothstep_12c031());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_12c031();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F7180C5720(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl
index 91094d2..908ee17 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021B1BABFFE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002984BBD8FE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.fxc.hlsl
index d7b7641..6e11cb6 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_586e12() {
+float16_t smoothstep_586e12() {
   float16_t res = float16_t(0.5h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_586e12();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_586e12();
+  prevent_dce.Store<float16_t>(0u, smoothstep_586e12());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_586e12();
+  prevent_dce.Store<float16_t>(0u, smoothstep_586e12());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_586e12();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021BCCB65870(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl
index a3f9a79..b7b0037 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001853DDAEEF0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000194C963C080(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.fxc.hlsl
index 2101de3..9f9fb55 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_6e7a74() {
+vector<float16_t, 3> smoothstep_6e7a74() {
   vector<float16_t, 3> res = (float16_t(0.5h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_6e7a74();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_6e7a74();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, smoothstep_6e7a74());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_6e7a74();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, smoothstep_6e7a74());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_6e7a74();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021BC9FC6690(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl
index 3207108..776e1ff 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EF0DA454B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F67B1D5560(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.fxc.hlsl
index b40f4dc..688cac8 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_c43ebd() {
+vector<float16_t, 4> smoothstep_c43ebd() {
   vector<float16_t, 4> res = (float16_t(0.5h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_c43ebd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_c43ebd();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, smoothstep_c43ebd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_c43ebd();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, smoothstep_c43ebd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_c43ebd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AA6383BD40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl
index a49cbb9..94d739d 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BC7D54FD60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029342806220(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.fxc.hlsl
index 0beb17d..3845a02 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_803d1c() {
+vector<float16_t, 4> sqrt_803d1c() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_803d1c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_803d1c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sqrt_803d1c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_803d1c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sqrt_803d1c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_803d1c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F1AA9742B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl
index d959471..e8e016a 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DFC676F020(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B7F0B596A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.fxc.hlsl
index dbb1eec..7ea367c 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_895a0c() {
+vector<float16_t, 3> sqrt_895a0c() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_895a0c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_895a0c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sqrt_895a0c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_895a0c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sqrt_895a0c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_895a0c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002DA52584670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl
index 607e101..131c887 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026EE00EE490(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000196149D87F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.fxc.hlsl
index 6d865d9..1a06561 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_d9ab4d() {
+vector<float16_t, 2> sqrt_d9ab4d() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_d9ab4d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_d9ab4d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sqrt_d9ab4d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_d9ab4d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sqrt_d9ab4d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_d9ab4d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000011728DD4290(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl
index 8ab84fd..803d48c 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B2C6FBE320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E0C06D9390(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.fxc.hlsl
index 75845d0..8c54080 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_ec33e9() {
+float16_t sqrt_ec33e9() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_ec33e9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_ec33e9();
+  prevent_dce.Store<float16_t>(0u, sqrt_ec33e9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_ec33e9();
+  prevent_dce.Store<float16_t>(0u, sqrt_ec33e9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_ec33e9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022A1A406D40(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl
index b07debd..1320578 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F851F3E390(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000024D9826BB80(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.fxc.hlsl
index d712816..1d653e4 100644
--- a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_07cb06() {
+vector<float16_t, 2> step_07cb06() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_07cb06();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_07cb06();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, step_07cb06());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_07cb06();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, step_07cb06());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_07cb06();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001811C806620(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.fxc.hlsl
index f6e1539..ce8feda 100644
--- a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001561865F680(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014D2567B6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.fxc.hlsl
index 9e00ddc..ef2968f 100644
--- a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_630d07() {
+float16_t step_630d07() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_630d07();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_630d07();
+  prevent_dce.Store<float16_t>(0u, step_630d07());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_630d07();
+  prevent_dce.Store<float16_t>(0u, step_630d07());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_630d07();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000157DD3FAD70(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.fxc.hlsl
index 4f8c5fb..edac8fc 100644
--- a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CF6363EE70(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D49704D1A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.fxc.hlsl
index 304999a..89ff4b2 100644
--- a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_baa320() {
+vector<float16_t, 4> step_baa320() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_baa320();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_baa320();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, step_baa320());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_baa320();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, step_baa320());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_baa320();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021B8A9CA6C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.fxc.hlsl
index baf9dcd..6de5d31 100644
--- a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000174BF91FCA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020296679420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.fxc.hlsl
index eceb22b..9374a0a 100644
--- a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_cc6b61() {
+vector<float16_t, 3> step_cc6b61() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_cc6b61();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_cc6b61();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, step_cc6b61());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_cc6b61();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, step_cc6b61());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_cc6b61();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002278A0F5950(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.fxc.hlsl
index b94a51d..21733dd 100644
--- a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018C063D15A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000223338AB3F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl
index 474ff19..64047c3 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupAdd_0dd12a());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupAdd_0dd12a());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001661A078960(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE878A5E50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl
index 51fa88f..0fbf1bf 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000203FE9B1D80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000256AFA26040(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl
index 2beeb4e..6d997a8 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAdd_1280c8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAdd_1280c8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BDE3BAF2E0(4,15-36): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000019992290260(4,15-36): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl
index 7965ca8..9f25e03 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DA4802CB10(4,15-36): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000026A2DEB0650(4,15-36): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl
index eb88bf4..f3d030a 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAdd_1eb429()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAdd_1eb429()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018C2972F3E0(4,14-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000177F50B01B0(4,14-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl
index 9a8dddf..9e3143b 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002E96BAF9210(4,14-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000162480E8E50(4,14-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.fxc.hlsl
index 2ad96d5..f7fccab 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupAdd_225207());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupAdd_225207());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000222ADE019D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F77EC04F90(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl
index a0ecd91..8a638c4 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AC6D189180(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000024621515BA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.fxc.hlsl
index f60f456..5e971ca 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAdd_22d041()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAdd_22d041()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002FC41D5EFF0(4,14-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001DBD12F0260(4,14-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl
index af3cd7c..c377b4a 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DEA7D7F0A0(4,14-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000024C7D32E0D0(4,14-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl
index 13b7562..e8cd744 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAdd_28db2c()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAdd_28db2c()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002314343F3E0(4,14-36): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000234498B0260(4,14-36): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl
index 35c342d..7bb4619 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C7D73F9120(4,14-36): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000224D9F0FB60(4,14-36): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl
index a9518c7..1061caf 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupAdd_2ab40a());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupAdd_2ab40a());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000266E3967020(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B0E236C9B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl
index 43297e6..f61d7f1 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000244934F3280(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021977F161E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl
index 0235de3..8c48a68 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAdd_3854ae()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAdd_3854ae()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B8C9424340(4,15-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001DE89B85E10(4,15-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl
index 1b8b5fc..0a02dff 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CBAD5F01B0(4,15-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000025D3DDA0650(4,15-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl
index a4cf741..33dc969 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAdd_6587ff()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAdd_6587ff()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029ADEE61DA0(4,15-37): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001D2EF3268F0(4,15-37): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl
index 8b3a300..94da6f2 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027D12C3CB10(4,15-37): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000014DFDADDD50(4,15-37): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl
index 48e4494..ee2a5c6 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAdd_7d1215()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAdd_7d1215()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CCCB8544D0(4,16-40): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001BC3F831CA0(4,16-40): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl
index 11dd789..2a251dd 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FF75C9EED0(4,16-40): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000184F7EEF870(4,16-40): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl
index 01d102f..d1884c7 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAdd_8f4c15()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAdd_8f4c15()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019F67A3F2E0(4,16-41): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000249358A6A80(4,16-41): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl
index 0bc1ab0..aab7541 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028E349D9060(4,16-41): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000208574BF790(4,16-41): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl
index 201e52e..9c519aa 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAdd_b61df7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAdd_b61df7()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022108E12040(4,14-30): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001C3130CA890(4,14-30): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl
index da91ab7..b7eca63 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A62B71EED0(4,14-30): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000227890DF9F0(4,14-30): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl
index 310aad5..6210c58 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAdd_ba53f9()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAdd_ba53f9()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D4149A22A0(4,13-28): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001EE455B5DC0(4,13-28): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl
index 4b49a9a..2ec72a0 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029DD877CB10(4,13-28): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001C73484E8F0(4,13-28): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl
index 45ba4f8..dd885bc 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupAdd_cae1ed());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupAdd_cae1ed());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F6A42F430(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002448436BD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl
index a609086..1c69c5b 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022E035C3280(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000212F34C84E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl
index 21d8e29..b5ee5c8 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAdd_dcf73f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAdd_dcf73f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020DED641DA0(4,16-39): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001FBA1246080(4,16-39): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl
index 65eb4a8..d1c3bb9 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F6EED8D30(4,16-39): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000015D9A0703E0(4,16-39): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl
index 7b23a86..af64857 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAdd_fbc357()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAdd_fbc357()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000166A6A2F2E0(4,15-38): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000258AA9071E0(4,15-38): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl
index a491308..4a520fa 100644
--- a/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001732F5EEED0(4,15-38): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000279FB45D500(4,15-38): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.fxc.hlsl
index 8df1464..d8dc05a 100644
--- a/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupAll_c962bd()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CFBD5A9C10(4,14-36): error X3004: undeclared identifier 'WaveActiveAllTrue'
+
diff --git a/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl
index a346dfc..d6c2e6c 100644
--- a/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000168F7D19120(4,14-36): error X3004: undeclared identifier 'WaveActiveAllTrue'
+C:\src\dawn\Shader@0x000001B391931C80(4,14-36): error X3004: undeclared identifier 'WaveActiveAllTrue'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl
index 2b24bcf..e16b9b1 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAnd_1877b3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAnd_1877b3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E52F512120(5,20-53): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001DB7FABFDD0(5,20-53): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl
index 6634d97..2287d94 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D263D70790(5,20-48): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001FF0024BE30(5,20-48): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.fxc.hlsl
index ef07ceb..1aa9606 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAnd_376802()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAnd_376802()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F31EC14340(4,15-39): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000027FF6ECD5D0(4,15-39): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl
index ac2635e..f912498 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025A86732530(4,15-39): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001F539720990(4,15-39): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl
index f1aa4a9..1340743 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAnd_4adc72()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAnd_4adc72()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017C0FBA7D40(5,20-53): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000017D50A774D0(5,20-53): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl
index 11fed8a..e6bfe9e 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017808552250(5,20-48): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000022AFB0BCFD0(5,20-48): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.fxc.hlsl
index a5ab851..2992a92 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAnd_4df632()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAnd_4df632()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C62A3C1D70(4,14-33): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001D2B162FD30(4,14-33): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl
index 92aaa95..03f72ba 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029CE37C90C0(4,14-33): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001CA70D5FEE0(4,14-33): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.fxc.hlsl
index d9f6ebe..4854602 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAnd_97655b()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAnd_97655b()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001613FAC8480(5,20-53): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000199732A8560(5,20-53): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl
index 288e324..8ca56d8 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027283D4F2E0(5,20-48): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001B414BDFEF0(5,20-48): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl
index 6a7ecca..46b9045 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAnd_ad0cd3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAnd_ad0cd3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C8B473F2E0(4,15-40): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000026A18D246A0(4,15-40): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl
index 574d599..5fd8c0f 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B38E708D30(4,15-40): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000202F2780880(4,15-40): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl
index 2c07048..18a8dd9 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAnd_c6fc92()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAnd_c6fc92()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D230F277C0(4,19-45): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000002466F5AAFB0(4,19-45): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl
index 0f6a316..44b886f 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021F051390E0(4,19-45): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001F4C972D510(4,19-45): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl
index 148c3e6..4e74a19 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAnd_d2c9a6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAnd_d2c9a6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001576ECA5300(4,15-41): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001EC5071FCC0(4,15-41): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl
index 46d52c6..91eb8aa 100644
--- a/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017A770F3140(4,15-41): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000217C80EC2E0(4,15-41): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.fxc.hlsl
index 439e998..d3f7ef0 100644
--- a/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupAny_cddda0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001672929D590(4,14-36): error X3004: undeclared identifier 'WaveActiveAnyTrue'
+
diff --git a/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl
index b6a19a1..d7fb019 100644
--- a/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BAD6E78DA0(4,14-36): error X3004: undeclared identifier 'WaveActiveAnyTrue'
+C:\src\dawn\Shader@0x0000025CEF9FF7A0(4,14-36): error X3004: undeclared identifier 'WaveActiveAnyTrue'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl
index 9037fc7..0d3fa55 100644
--- a/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBallot_1a8251()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBallot_1a8251()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002563DC4D4F0(4,15-36): error X3004: undeclared identifier 'WaveActiveBallot'
+C:\src\dawn\Shader@0x000002652FE860D0(4,15-36): error X3004: undeclared identifier 'WaveActiveBallot'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl
index 80eb988..9db7a11 100644
--- a/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000189B72E01D0(4,15-36): error X3004: undeclared identifier 'WaveActiveBallot'
+C:\src\dawn\Shader@0x000001F7E20AA900(4,15-36): error X3004: undeclared identifier 'WaveActiveBallot'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl
index f0c2321..ead08cb 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcast_02f329());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002299F68BCC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl
index 7bbdfea..6d1bf4c 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000266478C92E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D777CABDE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl
index 82c4a6c..0e56a53 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupBroadcast_07e2d8());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupBroadcast_07e2d8());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000207D706F440(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000020FE0F605C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl
index 23d3176..bad3619 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000169A65F90E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000025B5013FCF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
index af3b990..bc06b7b 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupBroadcast_08beca()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupBroadcast_08beca()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F382910100(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000017D77778DB0(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl
index f2e266a..e398c78 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000200E325DD20(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001C812A146B0(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl
index 697725a..be3c6ec 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcast_0f44e2());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcast_0f44e2());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019016CEC400(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F800C6BCC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl
index b02af42..efb17a7 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA953692E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000171B8AD46D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl
index 7c3f758..9e307c5 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcast_13f36c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcast_13f36c());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027E59DAF440(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AF6EB7E820(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl
index ff101ba..8cb8588 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023D53199B20(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C606A75F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
index 092f41e..9c7d99c 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupBroadcast_1d79c7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupBroadcast_1d79c7()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017D40F3C6A0(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000027D369C84E0(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl
index 4d05edd..0e16ac7 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000299093F9260(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001F5FFC26B60(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl
index 5abc47c..dd63fe7 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBroadcast_279027()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_279027()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002212FF5C630(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000262F32ED340(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl
index 3b98197..1c2f2c6 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017C2D3491D0(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000015E3F844E90(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl
index 4a7858f..66ceebd 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_2b59c9()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000290EB594DE0(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl
index 2d930a9..1d9e8bd 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000272CE18EE90(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000027F9EDCC250(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl
index 06ea175..478bf88 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_34ae44()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018FA5C2FFD0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl
index a8498a5..7629dfe 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025914B799A0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000021D0327A420(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl
index 7c1babf..f8b881c 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupBroadcast_34fa3d()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_34fa3d()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002247C411740(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002265AB286F0(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl
index 2f3c830..f4d9ed8 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020617FE9290(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001842452E0E0(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl
index a89cad2..d29ed0b 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupBroadcast_3e6879()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_3e6879()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024C7A480D80(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000287CBC6D1C0(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl
index 4e42e25..23fa11a 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DBC9E792D0(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001A12916D380(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl
index d8ffdc0..4de2d1e 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcast_41e5d7());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcast_41e5d7());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000213C7AF8740(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C009DC3890(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl
index 0e4b6ee..22319f5 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000113FFACEAD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F68E864700(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
index 35e5946..a2785c4 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcast_49de94()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BE376F1120(4,14-34): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl
index 510911b..cfa93d0 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000233C12190D0(4,14-34): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001996950FE60(4,14-34): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl
index 723b874..dc9feed 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupBroadcast_4a4334()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_4a4334()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017F3FA1F380(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000168061EFF00(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl
index 373c4f1..2444a20 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224955C9120(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000233FBE5A440(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl
index 3e3304f..c6b62f7 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupBroadcast_5196c8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_5196c8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224A7E223E0(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002A0650BDD60(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl
index efe5782..8cc9c2a 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000206F0312290(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001B294B7E090(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl
index 1dbb069..c54761a 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_6290a2()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002078107AE70(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl
index e46f18f..5bb26b6 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000160D65512A0(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000018AB29DF7A0(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl
index 73b717a..bc5b3a3 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupBroadcast_719ad6());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027117026390(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl
index 3a2cc3c..90a14d5 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FFE78DDF20(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017EA726FF80(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl
index 5c14c6c..38a5dc6 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_727609()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018E60F30390(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl
index 7b91955..5f0648f 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CDBD2E9FB0(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002B3C33946B0(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl
index ed08d41..4074887 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_838c78()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000166907CDE30(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl
index 1fa41fb..3b8f989 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D2E0912FF0(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000029166CACE30(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
index 570e108..b9a1dff 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcast_867093()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EDDF34C9D0(4,15-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl
index 0a7a684..be7e76f 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CB2945F530(4,15-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000019F641EF700(4,15-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl
index 5c0320c..b9e3885 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_8855b2()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019D6916D160(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl
index 70b7abd..d92cbec 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B468292290(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001F6AAE3FE90(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl
index d5cb6a2..020d9d3 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupBroadcast_912ff5()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_912ff5()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F7AC5AEE90(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000024E5FC5FCB0(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl
index 9bdfbbe..811cc0d 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002773445D960(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000278FE75FDE0(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
index 61fe5e6..21cc0d1 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcast_9ccdca()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000260905AC9F0(4,13-32): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl
index 9d7fa52..4d73099 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022A53FF9260(4,13-32): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001E17315FB20(4,13-32): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl
index 6778f75..b41b402 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_a279d7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CFD40EFCB0(4,15-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl
index 1c20fb4..df516fe 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B07754EF10(4,15-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001BFD2009E80(4,15-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl
index f072521..ba2983c 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcast_a3b3e5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A44597A5F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl
index 950d979..9f6975f 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000195D21D9520(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000252C350BC10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl
index 2904a3c..729d156 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBroadcast_b7e93b()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_b7e93b()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A4C62002F0(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000232A8C7BBB0(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl
index 7e82a49..eb248b4 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FAC95C8FA0(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000026EAEF9C260(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
index 6d7e6c6..591d97c 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupBroadcast_c36fe1()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupBroadcast_c36fe1()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028F3D630CD0(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001C557B9A790(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl
index fe5ff2f..6f7bdeb 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021298D9DDD0(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000014B81F5A3A0(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl
index 7f5b1b3..ecd0285 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_cd7aa1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021420DA7030(4,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl
index d8f1181..761bfd7 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024AD19E92B0(4,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000234FD6EFDC0(4,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl
index 70976fa..f6cb614 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupBroadcast_e275c8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_e275c8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A9C6836020(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001DF5ED902C0(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl
index afe70ef..5ac0415 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E636969290(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001D20F6CE440(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl
index d6de26a..72cbf64 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcast_e4dd1a());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000266EC52E1D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl
index ad0205f..ea7a7e1 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000249FD8D92E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C90884720(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl
index 53a7b311..1519e5f 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBroadcast_f637f9()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_f637f9()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EC7B068090(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002BEF46BFF00(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl
index 7985618..e2933e6 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000198C321D960(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000011D4807C250(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl
index 823df08..180e9ee 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_fa6810()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002795929FF00(4,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl
index f3634cb..5d549cb 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FA9B0592B0(4,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000218D05846D0(4,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl
index d501fa3..9a19a14 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcastFirst_0538e1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019B3E42C9D0(4,15-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl
index 10a2a4f..70bba37 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018F06089320(4,15-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000015FB673BEA0(4,15-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl
index 80d043a..b1fe5cb 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcastFirst_0e58ec());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C81A3CAFE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl
index a1eebf6..3d7bac3 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000279095892E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B63F9DBFE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl
index 35ee8bc..be2499e 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupBroadcastFirst_151e52());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016DBC1F6210(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl
index 001b7d6..dc40e4f 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021B81B20450(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000298F61FB730(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl
index 69f0a5d..cf337f8 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcastFirst_1d9530()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017689CEE1D0(4,15-40): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl
index cf3e5aa..3ac351e 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028C98C2CB10(4,15-40): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001A27B9A4F10(4,15-40): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl
index cea4dce..16f8de0 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcastFirst_5c6962()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000205A8FB0390(4,16-44): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl
index 09c4dd1..bcf351b 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021F906B0630(4,16-44): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001E5116846C0(4,16-44): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl
index 9042357..6a6263b 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcastFirst_5e5b6f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022A6ADF8710(4,15-41): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl
index e0159d5..f898ce4 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021ADE7122F0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000015EE1DA46C0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl
index 3368404..ebfcd08 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcastFirst_612d6f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DA83067DE0(4,15-42): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl
index 5309301..a92d2a4 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000208A178F820(4,15-42): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000026D5D6EF980(4,15-42): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl
index f006149..d818a31 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcastFirst_61f177()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012731A292F0(4,14-34): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl
index f90a088..73384f7 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023C69F02F90(4,14-34): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001C747DA0020(4,14-34): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl
index b05b904..493edf2 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcastFirst_6945f6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000244055446D0(4,16-43): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl
index a6f027b..8aae7ae 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E8F41090C0(4,16-43): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000002034E4CF980(4,16-43): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl
index 6eb74ed..f1551b8 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcastFirst_705aad());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FC538BFBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl
index eb7dce6..4837eeb 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CF629992E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B2A7496920(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl
index e5f1b49..83de293 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcastFirst_85b351()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002435D4CD1C0(4,14-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl
index 2d14c3c..047dc42 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015E5B3CEAF0(4,14-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001F81569A2F0(4,14-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl
index 2b17579..c0f5f5a 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcastFirst_8ae580()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017940DBFD20(4,16-45): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl
index a82cbf68..805a528 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015E472C1340(4,16-45): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000024AF33546C0(4,16-45): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl
index 43eecbd..d6db34b 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcastFirst_9a1bdc()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000210B60760C0(4,13-32): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl
index f8c0b10..a6e8c8a 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000010358759300(4,13-32): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001110A95E1C0(4,13-32): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl
index 6700345..2afd3c3 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcastFirst_9dccee()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026404290390(4,14-40): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl
index fe49eaa..41763a4 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F0FC419260(4,14-40): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000016BE85DCE50(4,14-40): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl
index d503b57..90ba3de 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcastFirst_a11307());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C81ACF60B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl
index 20a52ad..2f816a8 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022031DA1C40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021DF53E3A90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl
index af52b29..29d4182 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcastFirst_e820d4()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024FD9330390(4,14-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl
index 63aa4b0..685f595 100644
--- a/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000257E35A8DE0(4,14-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x00000251D33D1DA0(4,14-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.fxc.hlsl
index c05cc9d5..8ca4775 100644
--- a/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupElect_3943d6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028184540260(4,14-30): error X3004: undeclared identifier 'WaveIsFirstLane'
+
diff --git a/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl
index 770154c..db66b66 100644
--- a/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C1E627F790(4,14-30): error X3004: undeclared identifier 'WaveIsFirstLane'
+C:\src\dawn\Shader@0x000001276FFF06F0(4,14-30): error X3004: undeclared identifier 'WaveIsFirstLane'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl
index 7b033bb..f60f273 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveAdd_01de08());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveAdd_01de08());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C39A2580B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DC905A0410(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl
index e76061c..4e3fd69 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000168301A9170(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000012CD2E2B720(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl
index 175313c..46c9963 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_0ff95a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_0ff95a()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000217AC3EC550(4,15-37): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001D7C3E2FCF0(4,15-37): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl
index f63cb60..5dd42b6 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002565E4293A0(4,15-37): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002BDB0D9E0E0(4,15-37): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl
index 50fcf02..ad23742 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_406ab4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_406ab4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002ABAC96F970(4,14-36): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001A5D2CC4740(4,14-36): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl
index 4c2c7ae..bbe83ec 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021C9D43D960(4,14-36): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000017281EC46D0(4,14-36): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl
index 9a7bb13..c2ed809 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_41cfde()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_41cfde()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002044F4DC550(4,16-40): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001E76FCA65B0(4,16-40): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl
index 455666f..bae9259 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002097F0B9290(4,16-40): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001F1BC7D8E00(4,16-40): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl
index e6074a5..1bd8b9a 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_42684c()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_42684c()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F78FBAF3F0(4,14-30): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001BBCBCE12F0(4,14-30): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl
index 47e0a15..e5e6090 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023E28D28DC0(4,14-30): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001898E37ACF0(4,14-30): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl
index ede5c21..c94542a 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_48acea()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_48acea()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002434C54CE20(4,15-36): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000012190084F00(4,15-36): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl
index fd87138..1df1103 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014E1D0F3A40(4,15-36): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001EA18E5F870(4,15-36): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl
index dc2c87b..ffa2553 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupExclusiveAdd_4a1568());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupExclusiveAdd_4a1568());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015CCCF51AB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022685C50D70(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl
index 3797d7c..d17c8a5 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000117F5662F00(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B697DE5000(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl
index f9087e0..930bb4d 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_4c8024()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_4c8024()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FCA2BDF3F0(4,16-39): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000018029EE46F0(4,16-39): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl
index c23b75e..f285141 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C31C1AB490(4,16-39): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000020745DF46C0(4,16-39): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl
index 3111933..0bb8081 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_71ad0f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_71ad0f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000160F97AC550(4,16-41): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002A53A9EFD10(4,16-41): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl
index 54a77a5..82b9fad 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002146CC62E00(4,16-41): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001471ADD46A0(4,16-41): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl
index 4fe17ea..8e2341d 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveAdd_95e984());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveAdd_95e984());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019C4A627D30(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000154F86FB2F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl
index d71064a..449a721 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021E1BB89150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000268DE290D50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl
index 65b03ee..736a73e 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_967e38()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_967e38()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000192073E8300(4,15-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000257C0340490(4,15-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl
index 2a991ab..ed2478d 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B4FF969230(4,15-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001B5B18B4680(4,15-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl
index d32bfa5..e597291 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_b0c261()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_b0c261()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027EADF51C30(4,13-28): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002E806A17640(4,13-28): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl
index e387269..804a996 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D4778491E0(4,13-28): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001EF5FDDFEA0(4,13-28): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl
index 353aaf1..b7921d7 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_c08160()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_c08160()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000278EC974970(4,14-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002454DE6C9F0(4,14-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl
index b4f3632..95a774b 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E62861EF20(4,14-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000021C29B9FDE0(4,14-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl
index 771a379..c4fb5df 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveAdd_e58e23());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveAdd_e58e23());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002903A364710(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026D9F526230(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl
index 5e77494..c8ff058 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F9755BF4F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002EBA1844710(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl
index 111ba58..c50f7f7 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_ec300f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_ec300f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018FC519F3F0(4,15-38): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000288842346C0(4,15-38): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl
index c34f6ea..5fb8f19 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021DD3A792B0(4,15-38): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000267242EA420(4,15-38): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl
index d5b6f16..2b40e80 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_f0f712()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_f0f712()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025AAAA51BF0(4,14-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000016CDDB546F0(4,14-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl
index 74bbc3b..d4b2482 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C0653C8F00(4,14-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000015F83BBFDC0(4,14-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl
index cdf4d29..cc2262f 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_000b92()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_000b92()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002078E8DF3F0(4,15-42): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001AD1DC7FC30(4,15-42): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl
index 6650d01..d9e1a6a 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000196919391D0(4,15-42): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000020D0E7107F0(4,15-42): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl
index 09d6dcc..a04b4e7 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_019660()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_019660()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021F33F0C7D0(4,14-40): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000028486784F00(4,14-40): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl
index 00075bd..3950373 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BD9C54F4F0(4,14-40): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000018DAA90F880(4,14-40): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl
index 0194b1f..22e5456 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_0a04d5()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_0a04d5()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001566884C550(4,16-44): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002AAC2E1D630(4,16-44): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl
index 8204046..bec18d2 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023219CBBE90(4,16-44): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000027F0419F890(4,16-44): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl
index c9f7923..6dbf13c 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveMul_13ba26());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveMul_13ba26());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224AE26CC50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023F6ECA38F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl
index 270dfd4..392fe43 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000199475A9300(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D4A6A346C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl
index 566e2c8..0c71b60 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_25d1b9()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_25d1b9()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B2E00620C0(4,16-43): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001BEEFE70FB0(4,16-43): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl
index 8e1c868..095d8d3 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ADEC13CC50(4,16-43): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001F23322F8B0(4,16-43): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl
index ddbd0b4..a2f0230 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_4525a3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_4525a3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017113907EF0(4,14-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000027F445C46F0(4,14-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl
index 55b8ea7..014da70 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E235042DD0(4,14-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001956D0359D0(4,14-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl
index de93f3b..9e96352 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupExclusiveMul_6f431e());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupExclusiveMul_6f431e());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021D20F50BB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000020B764388C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl
index 170f7b1..aceff9a 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A175499170(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000019E2D288E20(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl
index cf1075d..9130b8b 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_7b5f57()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_7b5f57()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F6384E3DD0(4,16-45): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x00000210A00346C0(4,16-45): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl
index 91d3c02..ecc1171 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024D6287FE00(4,16-45): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001D8D094F6C0(4,16-45): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl
index ee837c7..4c3d876 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_87f23e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_87f23e()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019B8B1D3DD0(4,14-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001DDF1D6FD30(4,14-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl
index b06ed5e..b59f8e8 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025411159CB0(4,14-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002707656D2E0(4,14-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl
index 37d6d70..e853443 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveMul_98b2e4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveMul_98b2e4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002017E9F5BB0(4,15-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002704EB5F8A0(4,15-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl
index f75664b..07c60ba 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026CE73B9250(4,15-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001C4B386F720(4,15-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl
index 99f15a5..d391fb8 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveMul_a07956());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveMul_a07956());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002299ABC1D50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000277613551A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl
index 683da3c..36d5711 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000219D9AFF4C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F4D07A4AD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl
index 2467bb0..80d738e 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveMul_a23002()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveMul_a23002()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CDCCD4F3F0(4,13-32): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002386F000270(4,13-32): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl
index ce8c589..debe57a 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D6F202F0C0(4,13-32): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000027E0520F6E0(4,13-32): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl
index b4ca9e8..08caaa5 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_d1d490()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_d1d490()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025E395C5FA0(4,15-40): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x00000299AA2D0800(4,15-40): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl
index 454dd5b..3118a90 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000220C47D9120(4,15-40): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001C55BB1F8F0(4,15-40): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl
index 3770796..f81bb3e 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveMul_dc51f8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveMul_dc51f8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012EF89EF3F0(4,14-34): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000019DFA398DB0(4,14-34): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl
index f48e975c..c2e26b7 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001449E873140(4,14-34): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002872815A380(4,14-34): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl
index e269603..d949d09 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveMul_e88d1c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveMul_e88d1c());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F6AC68B40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D065F24940(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl
index 2019003..b9ec13e 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002016CC89150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BA77A2E340(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl
index 1aee984..c52070e 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_f039f4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_f039f4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EB5103F970(4,15-41): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001CABDADCE00(4,15-41): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl
index b094c54..34bfe7d 100644
--- a/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000237698BEF20(4,15-41): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001C50D3ED560(4,15-41): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.fxc.hlsl
index 2a6ce9b..e23f650 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMax_0b0375()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMax_0b0375()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002186309F980(4,16-41): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl
index d9eb968..15406f8 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002008C4D9290(4,16-41): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000002886E29FDB0(4,16-41): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl
index 90f27fe..8818ec8 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMax_15ccbf()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMax_15ccbf()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022CA3C267D0(4,15-38): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl
index e2363a9..3a8195d 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015F383ECB10(4,15-38): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001E205200FF0(4,15-38): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl
index 784de1e..773e556 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMax_1a1a5f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMax_1a1a5f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000169A16A5DD0(4,15-33): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl
index 10ed272..8187c32 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017018EF8FC0(4,15-33): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001D89261FB60(4,15-33): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.fxc.hlsl
index 9755ec0c..42d96d9 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMax_1fc846()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMax_1fc846()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020BA0259CA0(4,16-39): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl
index d42c7f1..8f7ff33 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000188EAF492C0(4,16-39): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001E0DE9D4E70(4,16-39): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.fxc.hlsl
index 88679a7..fe3a563 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMax_23f502()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMax_23f502()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028491B11C90(4,15-37): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl
index 0346231..a6658c8 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F44FB9140(4,15-37): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x0000021D13AE6900(4,15-37): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.fxc.hlsl
index 48cdad2..4f10db7 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMax_33e339());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMax_33e339());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E9F7CFFB70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl
index 5a36f08..9f00dd1 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000209BB98EA40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DEEB8DFAC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl
index ab5cb0c..81f2bf4 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMax_4ea90e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMax_4ea90e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ADA3D94690(4,14-35): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl
index 4c2a3cb..733b875 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025167249100(4,14-35): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001E9C8EE46C0(4,14-35): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.fxc.hlsl
index f946ad5..2de4a05 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupMax_5611a5());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupMax_5611a5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB66AF61F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl
index 612a003..51d8470 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027EFF13FC20(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C4171188A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.fxc.hlsl
index cd7046b..2b1647d 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMax_6c913e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMax_6c913e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000183C5010EB0(4,13-28): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl
index 3fe04fe..dad0795 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002346D13EED0(4,13-28): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000002A002AD0150(4,13-28): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.fxc.hlsl
index 311b16c..cc0a6c9 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMax_7c934c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMax_7c934c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A60BF16310(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl
index a6cf397..e93c63c 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A9C59CE720(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E1B0CD46E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl
index c5e3a29..e2441e5 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMax_7e81ea()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMax_7e81ea()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000251FF7C55C0(4,16-40): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl
index de7b110..fffed2e 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A569768D90(4,16-40): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001A339B3C2E0(4,16-40): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.fxc.hlsl
index 1453686..2f96cec 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMax_932164()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMax_932164()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022987580910(4,14-34): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl
index 8fee18a..0ce3de4 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000234F4E69120(4,14-34): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000002259E19F6C0(4,14-34): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl
index 5e35cef..e919e24 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMax_a3afe3());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMax_a3afe3());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002F2D466FB70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl
index 41d566e..31f0d60 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002745FE09150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000293B23825F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl
index aaf8b5e..9b36fd6 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMax_a3d5f7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMax_a3d5f7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000199212FFBB0(4,14-36): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl
index 90f54a2..8a50535 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017AB9C0CB10(4,14-36): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000002498343B720(4,14-36): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl
index f61ed9b..80b864f 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMax_b58cbf()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMax_b58cbf()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015F24E16CA0(4,14-30): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl
index 8d418df..32b102b 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AA607790C0(4,14-30): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x00000219400FD510(4,14-30): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl
index d2144ae..a052903 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMax_b8fb0e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMax_b8fb0e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CFBE8EFBC0(4,15-36): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl
index 903bfc9..69a5f76 100644
--- a/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F75008F0C0(4,15-36): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001C40D905360(4,15-36): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.fxc.hlsl
index 97c2be2..455e6eb 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMin_030ad6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMin_030ad6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014D35C7FA10(4,14-35): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl
index 3723137..1791834 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029D31A9DDC0(4,14-35): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x00000222A17B7830(4,14-35): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl
index 33314ea..674cbfd 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMin_0bc13a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMin_0bc13a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018100C8FA10(4,14-34): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl
index f172ce7..c1a8fe4 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000189FC0B8DB0(4,14-34): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001449F2CFB80(4,14-34): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.fxc.hlsl
index 1ed02ed..e595ea4 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMin_1de104()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMin_1de104()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E466A06440(4,14-36): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl
index 6fd7b93..fda7bc7 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021533969120(4,14-36): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x0000026C86D10650(4,14-36): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.fxc.hlsl
index 364dfaf..09ee9c7 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMin_2493ab()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMin_2493ab()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024F31EE5DE0(4,14-30): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl
index eaeed63..e8b5994 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027BE94DEED0(4,14-30): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001C292148150(4,14-30): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.fxc.hlsl
index 7c1fa90..b39e7ed 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMin_2d8828()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMin_2d8828()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B30053F980(4,16-39): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl
index ca96cc8..349be08 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012B446F9140(4,16-39): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x0000020B19F0FB20(4,16-39): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.fxc.hlsl
index 50c4e20..d033305 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMin_337a21()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMin_337a21()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D6B7BE6770(4,15-37): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl
index 69ce7ea..7ca606b 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028A1EF6F0A0(4,15-37): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000002300F9A0650(4,15-37): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.fxc.hlsl
index e3c915e..90a9b40 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMin_7def0a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMin_7def0a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021143EB68D0(4,15-33): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl
index 98803eb..3f4e5b5 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023A77BB8C90(4,15-33): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x0000023CF0CD8040(4,15-33): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.fxc.hlsl
index e34f8a9..dedaf00 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMin_82ef23()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMin_82ef23()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021D67916440(4,15-38): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl
index 8ea63c4..4eb24f1 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BF5FDBCB10(4,15-38): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001AEE6FAC1D0(4,15-38): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.fxc.hlsl
index e0f5a87..fd34ed4 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMin_836960()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMin_836960()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016E3B739C80(4,16-40): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl
index d241764..c4b4dca 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000170B2A1D960(4,16-40): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x0000025CC76FF870(4,16-40): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl
index c427e65..2c20ce2 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMin_8bb8c1()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMin_8bb8c1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002841F9E01B0(4,15-36): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl
index 4921973..889eb5f 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002344B10CB10(4,15-36): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x0000022A4D79C2E0(4,15-36): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl
index 68e6c9c..6708f3e 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupMin_8ffadc());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupMin_8ffadc());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000129A3BC0060(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl
index 18c70dc..e9d7015 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000217201E3260(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D9ED4ABAA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl
index 6c81bac..6ab1ec1 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMin_a96a2e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMin_a96a2e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EF2534B0B0(4,13-28): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl
index 088fb44..d1ba082 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CA302790A0(4,13-28): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x0000023952569A80(4,13-28): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl
index 88450d1..ae9c2db9 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMin_bbd9b0()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMin_bbd9b0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000225CFAA68F0(4,16-41): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl
index ab9d2e7..96294ea 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D16B11F330(4,16-41): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000002467E334BE0(4,16-41): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl
index cd89ad8..d3ffddc 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMin_c6da7c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMin_c6da7c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C4F31D6080(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl
index fa58b48..591c592 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000198DFBBF0D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022609F58D90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl
index 2afe52b..c29be82 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMin_cd3b9d());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMin_cd3b9d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AA6D4046A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl
index a50a440..55df14c 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018532363280(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000251A9B1BBB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.fxc.hlsl
index 5aa50c8..0508ed4 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -7,8 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMin_d85be6());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMin_d85be6());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D53D63BD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl
index 6f47487..4ffa0f5 100644
--- a/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F4780A9D80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DC788EAF70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl
index 8620d0d..9066683 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMul_0de9d3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMul_0de9d3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA1BC386C0(4,15-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002041E5BAFA0(4,15-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl
index a03b38a..287b95f 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CC2050F360(4,15-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000136A3C95CD0(4,15-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.fxc.hlsl
index b4441e6..bcadff2 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupMul_2941a2());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupMul_2941a2());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000228B15FF430(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000238002AF970(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl
index 517fa80..8f07cd4 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C3C84D590(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023302F14690(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.fxc.hlsl
index ff9b10a..5786000 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMul_3fe886()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMul_3fe886()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A526C92170(4,13-32): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000258C64F6130(4,13-32): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl
index 0f9abf4..f5a988f 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F77A3F1480(4,13-32): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002C00E395EF0(4,13-32): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl
index a324328..0dcd713 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMul_4f8ee6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMul_4f8ee6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000268847D86C0(4,14-34): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002058E5A9E40(4,14-34): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl
index b42b03b..315e6a2 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026B2BB5EED0(4,14-34): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001D35E5160E0(4,14-34): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.fxc.hlsl
index 7f13a44..63ec0c3 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMul_53aee2());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMul_53aee2());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025DDFFBF430(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B45B46BD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl
index 8ca2cd5..54e1dd2 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029058B3FAC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B2952DD590(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl
index 6ba247e..d58e291 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMul_5a8c86()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMul_5a8c86()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AAF2D7BAC0(4,14-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000202A8666420(4,14-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl
index 42e0dcb..b98197d 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A4EFC7F0A0(4,14-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001F077ABC2E0(4,14-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.fxc.hlsl
index d926941..7e5630e 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMul_66c813()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMul_66c813()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E48CF7C360(4,16-45): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000178F5B46910(4,16-45): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl
index 902320e..a08b9ae 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D78EF82250(4,16-45): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001AAD526F6C0(4,16-45): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl
index 6a7501d..b85a69d 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMul_6aaaf3());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMul_6aaaf3());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002112182F430(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021C7E396080(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl
index af60b6d..b3edaa4 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025AA5A0E900(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000184AAF86050(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.fxc.hlsl
index f8a7db9ca..6b739b5 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMul_93eccd()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMul_93eccd()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001952347BF90(4,16-44): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001DEDAAA6910(4,16-44): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl
index a409543..2a79582 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025D44C9F0A0(4,16-44): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000247FE67F6A0(4,16-44): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.fxc.hlsl
index 2d730c9..a659214 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMul_d584a2()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMul_d584a2()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020E62ABFFC0(4,14-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000266A6740260(4,14-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl
index 05325d0..ffc4209 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000270B4EDCB10(4,14-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000025D2EE5F6A0(4,14-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.fxc.hlsl
index c31db94..1edc0be 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMul_dc672a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMul_dc672a()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000174E653F3E0(4,15-40): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000021496A77F60(4,15-40): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl
index c007e88..fdc8930 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025EDE5DCA10(4,15-40): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001F4B013FB20(4,15-40): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.fxc.hlsl
index 1b41db8..9cf4a93 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMul_dd1333()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMul_dd1333()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D87F7EC440(4,15-42): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002561355DF90(4,15-42): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl
index c136b1d..c300d03 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000176C7639120(4,15-42): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001D855479A90(4,15-42): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl
index b1f1724..e9b3894 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMul_f2ac5b());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMul_f2ac5b());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020F6A5BF430(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E1B7A34CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl
index ada5e4d..2a4973e 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DC218D0420(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F3423061E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.fxc.hlsl
index bd389ef..1ac0423 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMul_f78398()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMul_f78398()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000188FB59CE00(4,16-43): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000024CB10EB110(4,16-43): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl
index 78b255b..0da5add 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A44F0AF4A0(4,16-43): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000016D868569D0(4,16-43): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.fxc.hlsl
index 3b8f759..2549273 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMul_fa781b()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMul_fa781b()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022E0402D850(4,15-41): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002B26F446AC0(4,15-41): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl
index 2c6269e..f4c04eb 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012117EC8F70(4,15-41): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000025CA06546A0(4,15-41): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.fxc.hlsl
index 674a761..aea806e 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMul_fab258()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMul_fab258()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002584C071870(4,14-40): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001C30D43EE80(4,14-40): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl
index 6f152fa..1861d55 100644
--- a/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002295F079040(4,14-40): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001FA7CDE1820(4,14-40): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.fxc.hlsl
index 8ae1bc1..8f65811 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupOr_03343f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupOr_03343f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016D913D2270(5,20-52): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001B628C70750(5,20-52): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl
index 4cc958d..8f245d5 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000159F0A6DD10(5,20-47): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000002923879AEE0(5,20-47): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.fxc.hlsl
index 96c80f8..4b2a693 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupOr_0bc264()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupOr_0bc264()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247F8842930(4,14-32): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001F9B28E4FA0(4,14-32): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl
index d9eba0f..52934d2 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AF4C8A8FE0(4,14-32): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001AD60AB0650(4,14-32): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl
index 41af36f..6487c51 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupOr_3f60e0()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupOr_3f60e0()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000283D71F1990(5,20-52): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001F877EB6390(5,20-52): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl
index f49bbd5..93f7fd5 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000206F94D14D0(5,20-47): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000207B2B1C2D0(5,20-47): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl
index 6f33107..fc4c44e 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupOr_4d4eb0()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupOr_4d4eb0()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F1F762F3E0(5,20-52): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001DF13090440(5,20-52): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl
index 5fede55..979e1b0 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E3EEBFDD10(5,20-47): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001D60F034E50(5,20-47): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.fxc.hlsl
index 9f013ea..36f9008 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupOr_663a21()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupOr_663a21()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000244C44786C0(4,15-39): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001D791B4B200(4,15-39): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl
index 7886afa..e7e9ce1 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F91FE29020(4,15-39): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000002632978C2D0(4,15-39): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl
index df1e945..05a3162 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupOr_aa74f7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupOr_aa74f7()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DAEF2F3690(4,15-38): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000025C899D0320(4,15-38): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl
index 43ebb88..a70b1ed 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000249871C9100(4,15-38): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000217FBB3FAA0(4,15-38): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl
index 2ec1e40..fd023a0 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupOr_ae58b6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupOr_ae58b6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FF6F0986C0(4,19-44): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000024F7D387CD0(4,19-44): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl
index ab5bd10..869445a 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002227510EEC0(4,19-44): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000011F12EDBA60(4,19-44): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.fxc.hlsl
index eb289f5..b605360 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupOr_f915e3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupOr_f915e3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000214A6D31D70(4,15-40): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000235485F38A0(4,15-40): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl
index dbb893a..bf12133 100644
--- a/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000222A2F7CB10(4,15-40): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000023193C6ACB0(4,15-40): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.fxc.hlsl
index f5cb594..47695aa 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_030422()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002420353BA70(4,15-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl
index 73e539a..46ffb27 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022AF36590D0(4,15-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001C8F1CCFB60(4,15-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl
index 4b7d76f..ebaa3fc 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_1f664c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F3EC7046F0(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl
index 5e723ea..e600340 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000260DC2BCA10(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001776372D540(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl
index c73f9db..456a34b 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_21f083()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026F2A6E95F0(4,15-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl
index c259be3..6d21d21 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D71676EF00(4,15-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001BBAB8DD540(4,15-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl
index 03a7785..af81c7a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_2ee993()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C31F8546C0(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl
index c496564..0d4dfcb 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F1FA3BEF00(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001CC3246FB20(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.fxc.hlsl
index 160d624..d335408 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_323416()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A9BE165500(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl
index a47bcac..e222f5f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024C78702300(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002460C41F100(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl
index 1928974..6db8d83 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_4752bd()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026FE542D680(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl
index ae297d1..3c06621 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022FE254EF20(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002C187A5FD20(4,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl
index ac2cfa4..1b03c25 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_4cbb69()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FF34CC46D0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl
index 1844787..40cc271 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000250F882FAC0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001B429210780(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl
index 9aeba80..44818b6 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_4f5711()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002025C506F70(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl
index 932cd7e..8b6437d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA01E79120(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000018C8B980550(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl
index b6965cd..3c07791 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_54f328()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BFB9809C00(4,14-34): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl
index 7173fff..841dc65 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ABBCC290B0(4,14-34): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000140BD238FB0(4,14-34): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl
index 6e261a2..36b336d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_5dfeab()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022FFC26C100(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl
index ee95d66..edb7bdd 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247AFFDD960(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000019D6AB3CD70(4,16-45): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl
index ea058d9..3f995c1 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_5ef5a2()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021C17D646D0(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl
index 4463a31..d1791b8 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002369011CB10(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002463C758E00(4,15-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.fxc.hlsl
index 5c27f9c..e9f12aa 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffle_647034());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EFE83DD970(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl
index e3581b8..15ad768 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017A83443500(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001818D930410(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl
index 9c232f2..ace5583 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffle_7ba2d5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029220254FD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl
index 7ba4fa1..611d5b8 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022286F40310(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028FEA500410(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl
index 33f2d9e..9085049 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_7c5d64()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A2299146D0(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl
index 9305c4e..d769828 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002040D229ED0(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000020C13820170(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl
index 18a9cfb..aeb8235 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffle_7d7b1e());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002191DFE48D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl
index 4cbccf0..dc6ab41 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F18BC9DF20(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023CA46746A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl
index be66fbf..c9f7b17 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffle_821df9());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002763C466E40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl
index 0c40238..d8a653b 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002949F769150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023058634AE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.fxc.hlsl
index b4049df..dc50fa7 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_824702()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023F0BC46290(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl
index 05c092b..66467b1 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247DFE791C0(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000025C724EC300(4,14-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl
index 8bd10e8..1158e74 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_84f261()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CDFE2A5050(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl
index 62a1ffb..2816aee 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001671DD51380(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000255B42DCE20(4,15-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl
index 6b7867a..8fb305e 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_85587b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026A3D985AB0(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl
index f710406..9b1f392 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000221D7DEEF40(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000021AA60C4A30(4,16-46): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl
index 5389080..5de7210 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_8890a5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AABBD70220(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl
index bfa6642..66f01ad 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002364956EF40(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000020080DFFB80(4,16-44): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl
index ce7d230..1560010 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_8bfbcd()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021A8A8C0540(4,13-32): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl
index 2c7afe4..222f151 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000154B070D910(4,13-32): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002D7A4BEF6E0(4,13-32): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl
index b6bdc63..bea3f51 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffle_8c3fd2());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018827174490(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl
index ccc63d2..4dec098 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D62B159150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EB6AFB4710(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl
index 4ed08da..bfc7b64 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffle_aa1d5c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024F688D4710(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl
index 985401f..277e7f9 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024D9B52F4F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A248324CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl
index 2bd0b1f..e0cb0a5 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffle_b0f28d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F10BF77D60(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl
index ea5bac2..f3a1865 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D308059090(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000146614D9190(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl
index e7c86f8..5ceffa0 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_b4bbb7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206A1B50670(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl
index f08add0..7c5682f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FE54B69120(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000224E182AE80(4,14-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl
index b1cd047..515d76e 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_bbb06c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000230B2BE46A0(4,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl
index 850faef..28eaac3 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D23D8C9100(4,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001D9F221F870(4,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl
index d9b1768..c693516 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_d4a772()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021DD0456140(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl
index b16b010..9b7eb4d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000266A5B5EF20(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000220EA80D5B0(4,13-33): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl
index bd6566f..c50c299 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_d9ff67()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214BF606AD0(4,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl
index d46c808..bf36b12 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EE5CE21290(4,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002390207BE20(4,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl
index 7735524..f65a414 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_e13c81()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E9CA070680(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl
index ac01c0e..720b677 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BCA1A59120(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002B7839108F0(4,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl
index f68ff82..f4d6eaf 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_e854d5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EAEC58BC30(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl
index e95da13..13842db 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FA7FC39210(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001FD5C89F870(4,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl
index d6e739a..9c235d5 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_f194f5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025554576860(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl
index 5029387..21ead63 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A980B291C0(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000016D89F0FB60(4,14-35): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl
index 3cc4058..389f516 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffle_fb4ab9());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002106E75E0A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl
index e2a9f24..c93baf1 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025FEED2FDC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020AF28353E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl
index 1bb9b70..2cb6fc2 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleDown_10eb45());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015179BFFB70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl
index 6d67c76..c7ea8a2 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleDown_10eb45());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026192EAB720(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl
index e8e702c..413c092 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_1b530f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021C54244630(4,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl
index c61d1dc..03287c7 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_1b530f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D9A3F9D380(4,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl
index 9411339..6feed0b 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_257ff0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F1DFAD68B0(4,45-62): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl
index f7425dd..dbd0723 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_257ff0()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000176B9064F30(4,45-62): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl
index 5ef6d92..5737300 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_313d9b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016D42E32370(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl
index cc79f2f..6c2d726 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_313d9b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002333AA64D30(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl
index 82d2dce..3d1342a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleDown_57b1e8());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C2371938C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl
index 3f1ef46..3a064b5 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleDown_57b1e8());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E62EF80150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl
index 9176b92..615fb0f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_5d8b9f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000187F0A160A0(4,44-61): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl
index be9ad07..a855c5d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_5d8b9f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000198AD7646D0(4,44-61): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl
index 3a3cefd..aa2e58e 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleDown_63fdb0());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023AE2DA0CA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl
index 0e7a9e1..6f3c0b0 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleDown_63fdb0());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FC41E64210(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl
index ee261e0..68b397a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_642789()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000253FBE3FFD0(4,41-58): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl
index 98abf96..bfeda9a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, subgroupShuffleDown_642789());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000201798C59E0(4,41-58): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl
index 8750256..0268fc0 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_7a0cf5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F7F396D340(4,43-60): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl
index f68ca01..66b51ff 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_7a0cf5()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F0B472FDE0(4,43-60): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl
index 093f875..1cdc2e1 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_7f8886()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000190F29F38C0(4,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl
index 6cabb92..fd8bcd3 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_7f8886()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002126B3F5C40(4,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl
index c72373c..4f2b09d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleDown_9c6714());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017EF9FBF0F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl
index fba126c..6001536 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleDown_9c6714());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021925AC46A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl
index d689ce1..bdab7cb 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_b41899()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EA3A684E90(4,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl
index d5a3bba..215e750 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_b41899()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A435280B50(4,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl
index abe998a..5d1347e 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_c9f1c4()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025172C446C0(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl
index 992849d..0c262af 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, subgroupShuffleDown_c9f1c4());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000248B3B0D380(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl
index 58b4a32..f2760e1 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_d269eb()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214B92E0BD0(4,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl
index 12d2030..10f3be8 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_d269eb()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021C2242F890(4,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl
index b53e5e5..49a7212 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_d46304()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E2E0F262B0(4,42-59): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl
index 91af3e5..1ab3bb9 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, subgroupShuffleDown_d46304());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001762192FDF0(4,42-59): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl
index 13ee2ca..f3fc51c 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_d90c2f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022474326B10(4,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl
index 4ad4841..39d6fa3 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, subgroupShuffleDown_d90c2f());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D407BDF6E0(4,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl
index 88e16d9..3c0ea92 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleUp_0990cd());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002167D8581D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl
index b9a91b6..90adc0d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleUp_0990cd());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027467BFFBD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl
index 4f8c244..de0840b 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_1bb93f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000208F863DF00(4,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl
index c5c5823..670d584 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_1bb93f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000266ACB24680(4,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl
index 125c11d..4940220 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_23c7ca()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EC369C4690(4,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl
index d8186b2..e06b0bd 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_23c7ca()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001777646F7A0(4,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl
index b99adab..0e4827d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_3242a6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B02F007100(4,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl
index e680449..30e4208 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, subgroupShuffleUp_3242a6());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F479ABCEB0(4,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl
index 740727e..8e3cde4 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_33d495()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EC6FC56790(4,45-62): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl
index 583567f..491846c 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_33d495()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027EE093FE00(4,45-62): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl
index e14eadd..b5b865f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_3e609f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024B182457B0(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl
index ebd66c0..006fb42 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_3e609f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EF62EF0C80(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl
index 37bb286..0a46765 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_58de69()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001548CF1FC30(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl
index 5a1cb15..ec476a2 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, subgroupShuffleUp_58de69());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000187648946C0(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl
index b638aa7..8ca414a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleUp_868e52());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C8A7F25CF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl
index 1202e70..3fa312b 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleUp_868e52());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F79E3B61F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl
index d8bd58a..91071bb 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_87c9d6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000292FE6E4EB0(4,44-61): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl
index a7c833b..c9ecf6e 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_87c9d6()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014EB512BDE0(4,44-61): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl
index 33f15b8..15ba544 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_88eb07()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000204685781D0(4,42-59): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl
index 0663a7b..7b1bb29 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, subgroupShuffleUp_88eb07());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CE7B5B46C0(4,42-59): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl
index 0203429..71b701c 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_8a63f3()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002200DFC0330(4,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl
index adbacb8..82b2556 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_8a63f3()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000200538146C0(4,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl
index fc4adee..6d3c5e2 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleUp_a2075a());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000182C04F5330(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl
index 2935c56..7e2a885 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleUp_a2075a());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B315B6C8C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl
index 44fb68d..a460527 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_abaea0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027AD48A51F0(4,41-58): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl
index 4f52f78..b427da0 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, subgroupShuffleUp_abaea0());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002DB6DAA46A0(4,41-58): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl
index 71149a4..56d59b1 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_b58804()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000250368157C0(4,43-60): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl
index 32e77e5..64e6a0f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_b58804()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021098A646A0(4,43-60): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl
index f1f7672..3a28770 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleUp_bbf7f4());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000230E4206BE0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl
index 0df5a72..6c1b11d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleUp_bbf7f4());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C3053FD1E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl
index cf4a91b..c22923f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_db5bcb()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C8CF1BBB0(4,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl
index e368ac3..5b9909f 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_db5bcb()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017509518640(4,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl
index 3bb1a2f..d000543 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_071aa0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B40FB560A0(4,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl
index bd9fe7f..471de6c 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_071aa0()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002255F7646D0(4,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl
index 407ef4b..5679bd4 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_08f588()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BAAC356A70(4,42-59): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl
index fe88293..db82c10 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, subgroupShuffleXor_08f588());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000188162CFDF0(4,42-59): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl
index f919e51..cb1cc43 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_1d36b6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000265F1244E70(4,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl
index 795d16e..1851569 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_1d36b6()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013B01AD46A0(4,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl
index b9f8063..5bbd9b3 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleXor_1e247f());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000269AE7F3FF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl
index 5051174..4848cc4 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleXor_1e247f());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CC361C0150(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl
index 5ecd59e..a5b83db 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleXor_1f2590());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029D3D2B4E00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl
index 2e160b3..aa5e583 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleXor_1f2590());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019AA4716040(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl
index 67ad72e..33d2899 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleXor_2e033d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001963BFA8100(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl
index 9bb71bb..22a6c58 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleXor_2e033d());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BEE4D8D7B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl
index 3dd82ce..4e9db6b 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_445e83()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E165554690(4,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl
index 3000d5b..b94df16 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_445e83()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019ADECEF6A0(4,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl
index 9a14ce4..fe422a4 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_7435fe()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028BAAF355A0(4,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl
index e72c01a..c4152f3 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_7435fe()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022D912CF720(4,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl
index 8f7c047..6240974 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_80b6e9()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C6DC4FB840(4,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl
index 782801a..54f664a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store(0u, subgroupShuffleXor_80b6e9());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027B93CA4E60(4,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl
index 81108cd..d617487 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_9f945a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A6D5D8B680(4,41-58): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl
index 8be3f27..8317afe 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, subgroupShuffleXor_9f945a());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000184990C6070(4,41-58): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl
index 4421d83..47379e5 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_bdddba()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ECDAFD5CF0(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl
index 3c6eb90..15b2caf 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_bdddba()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EF66CB4A50(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl
index 5d1922f..d1d307a 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_c88290()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A7100A7190(4,45-62): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl
index cab7a6b..26bb7e6 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_c88290()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000205107ED070(4,45-62): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl
index 539329f..5383043 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_caa816()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025B82AF0DF0(4,44-61): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl
index 406512c..2609e45 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_caa816()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C5322BCE00(4,44-61): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl
index 8e3469f..0c15217 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleXor_d224ab());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025FFAFADD10(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl
index ee9ec99..6b96496 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleXor_d224ab());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FD843B4FD0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl
index b084860..6a97b76 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_e3c10b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B22BB9DBB0(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl
index 990908a..4642ece 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, subgroupShuffleXor_e3c10b());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001763EFE14C0(4,40-57): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl
index 85528c1..ab69540 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_f7b453()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019824B41E00(4,43-60): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl
index e5b3655..1d5388d 100644
--- a/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -16,3 +16,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_f7b453()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014363366050(4,43-60): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.fxc.hlsl
index 637f404..23bf9b0 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupXor_468721()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupXor_468721()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CEE4B02460(4,15-40): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001EC2E7AFC40(4,15-40): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl
index f507934..da66903 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000233B7DCCB10(4,15-40): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000023549650650(4,15-40): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.fxc.hlsl
index 938a026..6674e57 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupXor_473de8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupXor_473de8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EB105DF2E0(5,20-53): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x00000214B9201060(5,20-53): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl
index 071d973..26383fa 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000242B6DCF420(5,20-48): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x00000239ADCCD1C0(5,20-48): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.fxc.hlsl
index 9d90935..aac7652 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupXor_694b17()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupXor_694b17()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000270803DB1B0(4,19-45): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001B1ED06D090(4,19-45): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl
index 7eb0c9e..529dc68 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000193D889EEB0(4,19-45): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001CDAB75FE80(4,19-45): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.fxc.hlsl
index 42110f2..3834790 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupXor_7750d6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupXor_7750d6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017025E7FFC0(4,14-33): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000016C8AD35EB0(4,14-33): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl
index ad964ed..6aa30f0 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022EE19590C0(4,14-33): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x00000263AE5FFE20(4,14-33): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.fxc.hlsl
index 209a110..712dce6 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupXor_7f6672()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupXor_7f6672()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D2005F1400(4,15-39): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000019E55AA7AC0(4,15-39): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl
index ca2e624..f3c50d1 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002DA0C759120(4,15-39): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001C940F14EE0(4,15-39): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl
index 30c49f9..62757fc 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupXor_83b1f3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupXor_83b1f3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001562F474130(5,20-53): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001DF5CE15280(5,20-53): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl
index 00ce9f0..f9c840f 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F1679AD960(5,20-48): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000002B9ADF44A00(5,20-48): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl
index 0d9f24d..976d659 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupXor_9c6e73()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupXor_9c6e73()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B02A250E00(5,20-53): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000023299903CA0(5,20-53): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl
index ee7a6c3..6539657 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015E4E422250(5,20-48): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000021B8B2BF890(5,20-48): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl
index 6cc915a..98511ca 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl
@@ -7,11 +7,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupXor_9d77e4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupXor_9d77e4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B889021E80(4,15-41): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001C51E055C00(4,15-41): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl
index 42c414c..26f45d5 100644
--- a/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E2D9DD2250(4,15-41): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000002033FD1D500(4,15-41): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.fxc.hlsl
index 240f5ad..0577f6c 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_539e54() {
+vector<float16_t, 4> tan_539e54() {
   vector<float16_t, 4> res = (float16_t(1.556640625h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_539e54();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_539e54();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tan_539e54());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_539e54();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tan_539e54());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_539e54();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017CFD3D3D00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.fxc.hlsl
index c9bdc83..50c03ec 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027BB1F9E9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E3A17BC740(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.fxc.hlsl
index 5680ec6..d5abab7 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_9f7c9c() {
+vector<float16_t, 2> tan_9f7c9c() {
   vector<float16_t, 2> res = (float16_t(1.556640625h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_9f7c9c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_9f7c9c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tan_9f7c9c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_9f7c9c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tan_9f7c9c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_9f7c9c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F75752D000(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl
index 2b2dc09..36cdea3 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027B2CC22480(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023AE88F64C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.fxc.hlsl
index fb2c732..a7e580b 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_d4d491() {
+float16_t tan_d4d491() {
   float16_t res = float16_t(1.556640625h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_d4d491();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_d4d491();
+  prevent_dce.Store<float16_t>(0u, tan_d4d491());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_d4d491();
+  prevent_dce.Store<float16_t>(0u, tan_d4d491());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_d4d491();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000247B84D6C10(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.fxc.hlsl
index 5633da6..15b8594 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D5071E0E80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002023CD961F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.fxc.hlsl
index ac1c01a..f3bfacd 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_db0456() {
+vector<float16_t, 3> tan_db0456() {
   vector<float16_t, 3> res = (float16_t(1.556640625h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_db0456();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_db0456();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tan_db0456());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_db0456();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tan_db0456());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_db0456();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000159BB26CA70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.fxc.hlsl
index a194c17..fc64fb0 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D08791F9C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020A6E7EBE50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.fxc.hlsl
index 986fcf6..8dbff16 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_06a4fe() {
+vector<float16_t, 3> tanh_06a4fe() {
   vector<float16_t, 3> res = (float16_t(0.76123046875h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_06a4fe();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_06a4fe();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tanh_06a4fe());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_06a4fe();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tanh_06a4fe());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_06a4fe();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F2FD1794A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl
index 8ffbe4d..84468c5 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E625E35430(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024DF3068F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.fxc.hlsl
index 3642a2d..ac748db 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_5b19af() {
+float16_t tanh_5b19af() {
   float16_t res = float16_t(0.76123046875h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_5b19af();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_5b19af();
+  prevent_dce.Store<float16_t>(0u, tanh_5b19af());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_5b19af();
+  prevent_dce.Store<float16_t>(0u, tanh_5b19af());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_5b19af();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020534E04FA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.fxc.hlsl
index 1daa61d..4bc5078 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021DDEB32710(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017A89D5D0E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.fxc.hlsl
index 4f48c56..b418c52 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_6d105a() {
+vector<float16_t, 2> tanh_6d105a() {
   vector<float16_t, 2> res = (float16_t(0.76123046875h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_6d105a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_6d105a();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tanh_6d105a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_6d105a();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tanh_6d105a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_6d105a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023252D86610(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.fxc.hlsl
index 985b170..4c63aa5 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000188971EF9E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000162D47F4450(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.fxc.hlsl
index 343c988..4adb1b7 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_e8efb3() {
+vector<float16_t, 4> tanh_e8efb3() {
   vector<float16_t, 4> res = (float16_t(0.76123046875h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_e8efb3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_e8efb3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tanh_e8efb3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_e8efb3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tanh_e8efb3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_e8efb3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B1FA1442B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl
index 51f9da8..2112577 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025A93E3E6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019AEA07B450(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/17e988.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/193203.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
index 5c618c8..b38ced5 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
@@ -175,6 +175,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022C9A1F99A0(55,137-143): error X3000: syntax error: unexpected token 'sampler'
-C:\src\dawn\Shader@0x0000022C9A1F99A0(56,27-32): error X3004: undeclared identifier 'coords'
+C:\src\dawn\Shader@0x0000021EDE397F80(55,137-143): error X3000: syntax error: unexpected token 'sampler'
+C:\src\dawn\Shader@0x0000021EDE397F80(56,27-32): error X3004: undeclared identifier 'coords'
 
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl
index b7acf20..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompare
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl
index b7acf20..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompare
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl
index b7acf20..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompare
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl
index f8e283a..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompareLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl
index f8e283a..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompareLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl
index f8e283a..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompareLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.fxc.hlsl
index 80d5ee1..dd87aaa 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.fxc.hlsl
@@ -1,41 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 3, 3> value) {
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
-}
-
-void transpose_06794e() {
+int transpose_06794e() {
   matrix<float16_t, 3, 3> res = matrix<float16_t, 3, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_06794e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_06794e();
+  prevent_dce.Store(0u, asuint(transpose_06794e()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_06794e();
+  prevent_dce.Store(0u, asuint(transpose_06794e()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_06794e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027B5A88C630(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027B5A88C630(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.fxc.hlsl
index 8927af7..46f94dc 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A7D738EF30(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001A7D738EF30(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000002148B614EB0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002148B614EB0(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.fxc.hlsl
index 8b775e9..473ed99 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.fxc.hlsl
@@ -1,40 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 2, 4> value) {
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
-}
-
-void transpose_5edd96() {
+int transpose_5edd96() {
   matrix<float16_t, 2, 4> res = matrix<float16_t, 2, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_5edd96();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_5edd96();
+  prevent_dce.Store(0u, asuint(transpose_5edd96()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_5edd96();
+  prevent_dce.Store(0u, asuint(transpose_5edd96()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_5edd96();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CAC652FB70(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CAC652FB70(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.fxc.hlsl
index bc97d29..b21db32 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CFF9225070(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001CFF9225070(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000018F90A952B0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018F90A952B0(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.fxc.hlsl
index 6d2e6f4..845f5da 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.fxc.hlsl
@@ -1,41 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 3, 4> value) {
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
-}
-
-void transpose_5f36bf() {
+int transpose_5f36bf() {
   matrix<float16_t, 3, 4> res = matrix<float16_t, 3, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_5f36bf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_5f36bf();
+  prevent_dce.Store(0u, asuint(transpose_5f36bf()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_5f36bf();
+  prevent_dce.Store(0u, asuint(transpose_5f36bf()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_5f36bf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A0252F6670(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A0252F6670(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl
index 0cc05a0..c553cb0 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002006306DAB0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002006306DAB0(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000001EE03B194E0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE03B194E0(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.fxc.hlsl
index f9f1c02..78b2c4e 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.fxc.hlsl
@@ -1,40 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 2, 2> value) {
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
-}
-
-void transpose_7be8b2() {
+int transpose_7be8b2() {
   matrix<float16_t, 2, 2> res = matrix<float16_t, 2, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_7be8b2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_7be8b2();
+  prevent_dce.Store(0u, asuint(transpose_7be8b2()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_7be8b2();
+  prevent_dce.Store(0u, asuint(transpose_7be8b2()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_7be8b2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F981EC5390(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F981EC5390(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl
index 06b3339..9e26990 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002897DF50460(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002897DF50460(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000017D4F39CC60(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017D4F39CC60(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.fxc.hlsl
index ec0bb48..d693450 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.fxc.hlsl
@@ -1,42 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 4, 4> value) {
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
-}
-
-void transpose_844869() {
+int transpose_844869() {
   matrix<float16_t, 4, 4> res = matrix<float16_t, 4, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_844869();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_844869();
+  prevent_dce.Store(0u, asuint(transpose_844869()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_844869();
+  prevent_dce.Store(0u, asuint(transpose_844869()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_844869();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000183663A5320(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000183663A5320(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.fxc.hlsl
index 74a8537..c5958b8 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002352527E570(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002352527E570(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000025774E945E0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025774E945E0(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.fxc.hlsl
index 11937a1..6f6355a 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.fxc.hlsl
@@ -1,42 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 4, 3> value) {
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
-}
-
-void transpose_8c06ce() {
+int transpose_8c06ce() {
   matrix<float16_t, 4, 3> res = matrix<float16_t, 4, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_8c06ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_8c06ce();
+  prevent_dce.Store(0u, asuint(transpose_8c06ce()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_8c06ce();
+  prevent_dce.Store(0u, asuint(transpose_8c06ce()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_8c06ce();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000228E2476780(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000228E2476780(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl
index dbdca0a..8b0ca56 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000147314EF3A0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000147314EF3A0(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000018111A5B6D0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018111A5B6D0(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.fxc.hlsl
index df8512e..8021772 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.fxc.hlsl
@@ -1,40 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 2, 3> value) {
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
-}
-
-void transpose_b9ad1f() {
+int transpose_b9ad1f() {
   matrix<float16_t, 2, 3> res = matrix<float16_t, 2, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_b9ad1f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_b9ad1f();
+  prevent_dce.Store(0u, asuint(transpose_b9ad1f()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_b9ad1f();
+  prevent_dce.Store(0u, asuint(transpose_b9ad1f()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_b9ad1f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025027315E30(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025027315E30(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl
index 1ab7bb6..044e318 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FE750B28D0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001FE750B28D0(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x00000214A59A38C0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000214A59A38C0(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.fxc.hlsl
index 5852f9e..c4f399a 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.fxc.hlsl
@@ -1,41 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 3, 2> value) {
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
-}
-
-void transpose_d6faec() {
+int transpose_d6faec() {
   matrix<float16_t, 3, 2> res = matrix<float16_t, 3, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_d6faec();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_d6faec();
+  prevent_dce.Store(0u, asuint(transpose_d6faec()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_d6faec();
+  prevent_dce.Store(0u, asuint(transpose_d6faec()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_d6faec();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EB4BAD5BB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EB4BAD5BB0(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.fxc.hlsl
index 6840db0..a9b21cd 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000267E68F00A0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000267E68F00A0(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000012595335390(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000012595335390(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.fxc.hlsl
index ab5a3c4..8a7b915 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.fxc.hlsl
@@ -1,42 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 4, 2> value) {
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
-}
-
-void transpose_faeb05() {
+int transpose_faeb05() {
   matrix<float16_t, 4, 2> res = matrix<float16_t, 4, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_faeb05();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_faeb05();
+  prevent_dce.Store(0u, asuint(transpose_faeb05()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_faeb05();
+  prevent_dce.Store(0u, asuint(transpose_faeb05()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_faeb05();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A87A575780(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A87A575780(5,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.fxc.hlsl
index 2c905f6..8ae7899 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.ir.fxc.hlsl
@@ -43,6 +43,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001946A60E750(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001946A60E750(15,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000023D43646210(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023D43646210(15,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.fxc.hlsl
index f2745f4..6512998 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void trunc_103ab8() {
+vector<float16_t, 3> trunc_103ab8() {
   vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_103ab8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  trunc_103ab8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, trunc_103ab8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_103ab8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, trunc_103ab8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_103ab8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002950E864670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.fxc.hlsl
index 596cc71..c444456 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E77E7BFB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002345D1B6600(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.fxc.hlsl
index ff5ba4b..0c6d879 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void trunc_a56109() {
+vector<float16_t, 2> trunc_a56109() {
   vector<float16_t, 2> res = (float16_t(1.0h)).xx;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_a56109();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  trunc_a56109();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, trunc_a56109());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_a56109();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, trunc_a56109());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_a56109();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002016AEB6670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.fxc.hlsl
index bf5d762..8548649 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FACAF2EBB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F9F7244F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.fxc.hlsl
index 11c8a53..5ec139a 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void trunc_cc2b0d() {
+float16_t trunc_cc2b0d() {
   float16_t res = float16_t(1.0h);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_cc2b0d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  trunc_cc2b0d();
+  prevent_dce.Store<float16_t>(0u, trunc_cc2b0d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_cc2b0d();
+  prevent_dce.Store<float16_t>(0u, trunc_cc2b0d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_cc2b0d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028303766580(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl
index b69cf5d..6dab598 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023D4B1AF280(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017B743061F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.fxc.hlsl
index 72dc6fd..708fce6 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.fxc.hlsl
@@ -1,35 +1,46 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void trunc_ce7c17() {
+vector<float16_t, 4> trunc_ce7c17() {
   vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_ce7c17();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  trunc_ce7c17();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, trunc_ce7c17());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_ce7c17();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, trunc_ce7c17());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_ce7c17();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EDF64B4CE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl
index e3f5e53..b807ef2 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C802DE03B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A2DA5838B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl
index 9fe9c3e..f4e23fc 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl
@@ -1,18 +1,26 @@
 SKIP: FAILED
 
-float16_t tint_workgroupUniformLoad(inout float16_t p) {
+groupshared float16_t arg_0;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    arg_0 = float16_t(0.0h);
+  }
   GroupMemoryBarrierWithGroupSync();
-  const float16_t result = p;
+}
+
+float16_t tint_workgroupUniformLoad_arg_0() {
+  GroupMemoryBarrierWithGroupSync();
+  float16_t result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float16_t arg_0;
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void workgroupUniformLoad_e07d08() {
-  float16_t res = tint_workgroupUniformLoad(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
+float16_t workgroupUniformLoad_e07d08() {
+  float16_t res = tint_workgroupUniformLoad_arg_0();
+  return res;
 }
 
 struct tint_symbol_1 {
@@ -20,11 +28,8 @@
 };
 
 void compute_main_inner(uint local_invocation_index) {
-  {
-    arg_0 = float16_t(0.0h);
-  }
-  GroupMemoryBarrierWithGroupSync();
-  workgroupUniformLoad_e07d08();
+  tint_zero_workgroup_memory(local_invocation_index);
+  prevent_dce.Store<float16_t>(0u, workgroupUniformLoad_e07d08());
 }
 
 [numthreads(1, 1, 1)]
@@ -32,3 +37,6 @@
   compute_main_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020B73E3DD80(1,13-21): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl
index ae10f73..716076f 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022E2DF79150(7,13-21): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000254250B8880(7,13-21): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.fxc.hlsl
index ca9cc56..6ab7dfe 100644
--- a/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_421ca3() {
+vector<float16_t, 3> abs_421ca3() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = abs(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_421ca3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_421ca3();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, abs_421ca3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_421ca3();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, abs_421ca3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_421ca3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000137054364D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.fxc.hlsl
index 7dc96d0..07453a6 100644
--- a/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021B7BB2EB20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A411839650(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.fxc.hlsl
index 090c711..fc60a69 100644
--- a/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_538d29() {
+vector<float16_t, 4> abs_538d29() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = abs(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_538d29();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_538d29();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, abs_538d29());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_538d29();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, abs_538d29());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_538d29();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020DDCC95890(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.fxc.hlsl
index 52fc522..c2d5d76 100644
--- a/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000228B95CF2D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022176AD45D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.fxc.hlsl
index 8fa6325..86155a1 100644
--- a/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_5ae4fe() {
+vector<float16_t, 2> abs_5ae4fe() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = abs(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_5ae4fe();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_5ae4fe();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, abs_5ae4fe());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_5ae4fe();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, abs_5ae4fe());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_5ae4fe();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024766D5ADA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl
index d32f006..561c4ca 100644
--- a/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D8F9F2E750(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002147FE893F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.fxc.hlsl
index 70c1c47..1660f3f 100644
--- a/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void abs_fd247f() {
+float16_t abs_fd247f() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = abs(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  abs_fd247f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  abs_fd247f();
+  prevent_dce.Store<float16_t>(0u, abs_fd247f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  abs_fd247f();
+  prevent_dce.Store<float16_t>(0u, abs_fd247f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = abs_fd247f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000215B41D56B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.fxc.hlsl
index c5a94de..f23de99 100644
--- a/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002557DE9EC50(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001AE5A7438B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.fxc.hlsl
index cf77412..11ee2bf 100644
--- a/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_004aff() {
+vector<float16_t, 2> acos_004aff() {
   vector<float16_t, 2> arg_0 = (float16_t(0.96875h)).xx;
   vector<float16_t, 2> res = acos(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_004aff();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_004aff();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acos_004aff());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_004aff();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acos_004aff());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_004aff();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F63287C180(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.fxc.hlsl
index 55df8bf..8a8e828 100644
--- a/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002858E51EB30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002FC42339650(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acos/203628.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.fxc.hlsl
index 5a87888..2813801 100644
--- a/test/tint/builtins/gen/var/acos/203628.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_203628() {
+vector<float16_t, 4> acos_203628() {
   vector<float16_t, 4> arg_0 = (float16_t(0.96875h)).xxxx;
   vector<float16_t, 4> res = acos(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_203628();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_203628();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acos_203628());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_203628();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acos_203628());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_203628();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A6C2F6D370(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.fxc.hlsl
index 6a827af..317f2fd 100644
--- a/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026857F2FBB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014934DC8FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.fxc.hlsl
index eee0889..e5406fc 100644
--- a/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_303e3d() {
+float16_t acos_303e3d() {
   float16_t arg_0 = float16_t(0.96875h);
   float16_t res = acos(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_303e3d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_303e3d();
+  prevent_dce.Store<float16_t>(0u, acos_303e3d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_303e3d();
+  prevent_dce.Store<float16_t>(0u, acos_303e3d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_303e3d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029338DFBA60(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.fxc.hlsl
index 697cb43..6e0dd73 100644
--- a/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D870F6F990(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F73475CBC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.fxc.hlsl
index 38c2ae3..a722f79 100644
--- a/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acos_f47057() {
+vector<float16_t, 3> acos_f47057() {
   vector<float16_t, 3> arg_0 = (float16_t(0.96875h)).xxx;
   vector<float16_t, 3> res = acos(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acos_f47057();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acos_f47057();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acos_f47057());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acos_f47057();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acos_f47057());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acos_f47057();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000207125BBBA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.fxc.hlsl
index a3941ad..4650d84 100644
--- a/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000173BB627FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000264BC8DB3E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.fxc.hlsl
index e184be3..f3b939b 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) - float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_5f49d8() {
+vector<float16_t, 2> acosh_5f49d8() {
   vector<float16_t, 2> arg_0 = (float16_t(1.54296875h)).xx;
   vector<float16_t, 2> res = tint_acosh(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_5f49d8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_5f49d8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acosh_5f49d8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_5f49d8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, acosh_5f49d8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_5f49d8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AE671596D0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl
index 8b5affd..9c17a84 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000236ED89FE50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AFA5E43E80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.fxc.hlsl
index 52fdae1..869af68 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) - float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_a37dfe() {
+float16_t acosh_a37dfe() {
   float16_t arg_0 = float16_t(1.54296875h);
   float16_t res = tint_acosh(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_a37dfe();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_a37dfe();
+  prevent_dce.Store<float16_t>(0u, acosh_a37dfe());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_a37dfe();
+  prevent_dce.Store<float16_t>(0u, acosh_a37dfe());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_a37dfe();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000185A6C64F90(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl
index 7c813ff..4e4ac42 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D19E5905D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002B98FD238A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.fxc.hlsl
index 248a0d6..f7dabf8 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) - float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_de60d8() {
+vector<float16_t, 4> acosh_de60d8() {
   vector<float16_t, 4> arg_0 = (float16_t(1.54296875h)).xxxx;
   vector<float16_t, 4> res = tint_acosh(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_de60d8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_de60d8();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acosh_de60d8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_de60d8();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, acosh_de60d8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_de60d8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C15B764C0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.fxc.hlsl
index 20bb176..9155c7e 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002363062FBA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020CFC0D56E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.fxc.hlsl
index 56b75d9..ceb6772 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) - float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void acosh_f56574() {
+vector<float16_t, 3> acosh_f56574() {
   vector<float16_t, 3> arg_0 = (float16_t(1.54296875h)).xxx;
   vector<float16_t, 3> res = tint_acosh(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  acosh_f56574();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  acosh_f56574();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acosh_f56574());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  acosh_f56574();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, acosh_f56574());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = acosh_f56574();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021EEC189F90(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.fxc.hlsl
index 91fa479..04599e3 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A6217FD8E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BF741E4770(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.fxc.hlsl
index 2aab206..f6199a4 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_11dfda() {
+float16_t asin_11dfda() {
   float16_t arg_0 = float16_t(0.479248046875h);
   float16_t res = asin(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_11dfda();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_11dfda();
+  prevent_dce.Store<float16_t>(0u, asin_11dfda());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_11dfda();
+  prevent_dce.Store<float16_t>(0u, asin_11dfda());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_11dfda();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000164C2CC60C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.fxc.hlsl
index add12da..13d91c0 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021CD7D6F940(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000193F25238F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.fxc.hlsl
index 62de534..df9dac4 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_2d8e29() {
+vector<float16_t, 3> asin_2d8e29() {
   vector<float16_t, 3> arg_0 = (float16_t(0.479248046875h)).xxx;
   vector<float16_t, 3> res = asin(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_2d8e29();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_2d8e29();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asin_2d8e29());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_2d8e29();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asin_2d8e29());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_2d8e29();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A261088FF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.fxc.hlsl
index c3548dd..65cff7e 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019C93E4F770(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028E79308F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.fxc.hlsl
index c35ae14..f7b5ff7 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_3cfbd4() {
+vector<float16_t, 4> asin_3cfbd4() {
   vector<float16_t, 4> arg_0 = (float16_t(0.479248046875h)).xxxx;
   vector<float16_t, 4> res = asin(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_3cfbd4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_3cfbd4();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asin_3cfbd4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_3cfbd4();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asin_3cfbd4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_3cfbd4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000263146264C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl
index e14e96b..e46fe6d 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025F2793FD50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017874D84E70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.fxc.hlsl
index 59476ed..3d65519 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asin_b4aced() {
+vector<float16_t, 2> asin_b4aced() {
   vector<float16_t, 2> arg_0 = (float16_t(0.479248046875h)).xx;
   vector<float16_t, 2> res = asin(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asin_b4aced();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asin_b4aced();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asin_b4aced());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asin_b4aced();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asin_b4aced());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asin_b4aced();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EF7EB766C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.fxc.hlsl
index 49cf4fb..c5bc565 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023786800360(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D89EAF5980(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.fxc.hlsl
index d5de8b6..5466789 100644
--- a/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) + float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_468a48() {
+float16_t asinh_468a48() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = tint_sinh(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_468a48();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_468a48();
+  prevent_dce.Store<float16_t>(0u, asinh_468a48());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_468a48();
+  prevent_dce.Store<float16_t>(0u, asinh_468a48());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_468a48();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014271E760C0(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.fxc.hlsl
index 7b7733f..24e3838 100644
--- a/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029F4CB1FDE0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023E453238B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.fxc.hlsl
index c86d1d1..b6bc11b 100644
--- a/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) + float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_95ab2b() {
+vector<float16_t, 4> asinh_95ab2b() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = tint_sinh(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_95ab2b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_95ab2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asinh_95ab2b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_95ab2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, asinh_95ab2b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_95ab2b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000232D918D390(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl
index 07455e8..e5df9e3 100644
--- a/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001414F4C5FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002439BD265F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.fxc.hlsl
index 8973e5a..9acc7a9 100644
--- a/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) + float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_ad8f8b() {
+vector<float16_t, 2> asinh_ad8f8b() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = tint_sinh(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_ad8f8b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_ad8f8b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asinh_ad8f8b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_ad8f8b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, asinh_ad8f8b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_ad8f8b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015C705F8E50(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl
index d493c5a..3caf645 100644
--- a/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE1A1C5F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000218E9244EC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.fxc.hlsl
index 907a61c..60677b1 100644
--- a/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return log((x + sqrt(((x * x) + float16_t(1.0h)))));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void asinh_fb5e8c() {
+vector<float16_t, 3> asinh_fb5e8c() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = tint_sinh(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  asinh_fb5e8c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  asinh_fb5e8c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asinh_fb5e8c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  asinh_fb5e8c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, asinh_fb5e8c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = asinh_fb5e8c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B8A6AE8E50(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl
index d51b2ce..bdfa249 100644
--- a/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B43EDFE6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000234906E8F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.fxc.hlsl
index 37261be..4a50964 100644
--- a/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_19faea() {
+vector<float16_t, 4> atan_19faea() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = atan(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_19faea();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_19faea();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan_19faea());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_19faea();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan_19faea());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_19faea();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000011BF17564F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.fxc.hlsl
index ec8dfa5..3a4ba8f 100644
--- a/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000187D4C9F4D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014A259A8F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.fxc.hlsl
index 1fa2af3..0f22555 100644
--- a/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_1e1764() {
+vector<float16_t, 2> atan_1e1764() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = atan(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_1e1764();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_1e1764();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan_1e1764());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_1e1764();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan_1e1764());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_1e1764();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001988E795750(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.fxc.hlsl
index 9a97296..6aa5be5 100644
--- a/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A323BC0090(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FFFF47E230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.fxc.hlsl
index e758018..1efe5fa 100644
--- a/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_a5f421() {
+vector<float16_t, 3> atan_a5f421() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = atan(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_a5f421();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_a5f421();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan_a5f421());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_a5f421();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan_a5f421());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_a5f421();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D8BA7F5750(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.fxc.hlsl
index c333027..b82e52b 100644
--- a/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024EBAFE0460(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C97E2D5970(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.fxc.hlsl
index 6603778..156d374 100644
--- a/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan_a7ba61() {
+float16_t atan_a7ba61() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = atan(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan_a7ba61();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan_a7ba61();
+  prevent_dce.Store<float16_t>(0u, atan_a7ba61());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan_a7ba61();
+  prevent_dce.Store<float16_t>(0u, atan_a7ba61());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan_a7ba61();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026DB00460F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.fxc.hlsl
index 71d9b75..f1e4a7f 100644
--- a/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002234182E880(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022180BCBFC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.fxc.hlsl
index 94342e4..5e6001d 100644
--- a/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_21dfea() {
+vector<float16_t, 3> atan2_21dfea() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = atan2(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_21dfea();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_21dfea();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan2_21dfea());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_21dfea();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atan2_21dfea());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_21dfea();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002032A58D3F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.fxc.hlsl
index cb45ce6..a647feb 100644
--- a/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029B5026F330(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E5B89646D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.fxc.hlsl
index 64a185e..7b5a12d 100644
--- a/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_93febc() {
+vector<float16_t, 2> atan2_93febc() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = atan2(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_93febc();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_93febc();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan2_93febc());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_93febc();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atan2_93febc());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_93febc();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020A089A9260(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.fxc.hlsl
index fa05d3c..11bee61 100644
--- a/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028F6EBA5FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020AC146B800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.fxc.hlsl
index 0046f93..5bfac61 100644
--- a/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_ca698e() {
+float16_t atan2_ca698e() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t res = atan2(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_ca698e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_ca698e();
+  prevent_dce.Store<float16_t>(0u, atan2_ca698e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_ca698e();
+  prevent_dce.Store<float16_t>(0u, atan2_ca698e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_ca698e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019CA6CD5740(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.fxc.hlsl
index 18ecc25..2573727 100644
--- a/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027E7570EEC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000027490514DC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.fxc.hlsl
index 85516dd..480ec24 100644
--- a/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atan2_d983ab() {
+vector<float16_t, 4> atan2_d983ab() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = atan2(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atan2_d983ab();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atan2_d983ab();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan2_d983ab());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atan2_d983ab();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atan2_d983ab());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atan2_d983ab();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D8571E9260(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.fxc.hlsl
index 7dc2d04..b159125 100644
--- a/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EE61FAFF30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D2634DCF50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.fxc.hlsl
index 099ba25..49d6f46 100644
--- a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_5bf88d() {
+vector<float16_t, 2> atanh_5bf88d() {
   vector<float16_t, 2> arg_0 = (float16_t(0.5h)).xx;
   vector<float16_t, 2> res = tint_atanh(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_5bf88d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_5bf88d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atanh_5bf88d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_5bf88d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, atanh_5bf88d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_5bf88d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000011BAEDCD390(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl
index e0d5edf..4979edc 100644
--- a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ECD3085FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029E2A3D4300(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.fxc.hlsl
index 82825aa..55ac6c2 100644
--- a/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_d2d8cd() {
+float16_t atanh_d2d8cd() {
   float16_t arg_0 = float16_t(0.5h);
   float16_t res = tint_atanh(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_d2d8cd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_d2d8cd();
+  prevent_dce.Store<float16_t>(0u, atanh_d2d8cd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_d2d8cd();
+  prevent_dce.Store<float16_t>(0u, atanh_d2d8cd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_d2d8cd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B697198420(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl
index 5054f75..d716a97 100644
--- a/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C59B98F440(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000166FE4D4570(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.fxc.hlsl
index 7420037..5abe350 100644
--- a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_e3b450() {
+vector<float16_t, 4> atanh_e3b450() {
   vector<float16_t, 4> arg_0 = (float16_t(0.5h)).xxxx;
   vector<float16_t, 4> res = tint_atanh(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_e3b450();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_e3b450();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atanh_e3b450());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_e3b450();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, atanh_e3b450());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_e3b450();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F6BA5C64F0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.fxc.hlsl
index 600303f..e0aaa99 100644
--- a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A91BB75060(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015924F456C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.fxc.hlsl
index a547f07..b5e2efe 100644
--- a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return (log(((float16_t(1.0h) + x) / (float16_t(1.0h) - x))) * float16_t(0.5h));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void atanh_ec4b06() {
+vector<float16_t, 3> atanh_ec4b06() {
   vector<float16_t, 3> arg_0 = (float16_t(0.5h)).xxx;
   vector<float16_t, 3> res = tint_atanh(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  atanh_ec4b06();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  atanh_ec4b06();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atanh_ec4b06());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  atanh_ec4b06();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, atanh_ec4b06());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = atanh_ec4b06();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014E5B00FD80(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl
index cb0f618..49e62bc 100644
--- a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017EA4BAA320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CB5BC487D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.fxc.hlsl
index c74bdd7..af4f28e 100644
--- a/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.fxc.hlsl
@@ -1,41 +1,47 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_1df11f() {
+vector<float16_t, 2> bitcast_1df11f() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = arg_0;
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_1df11f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_1df11f();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_1df11f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_1df11f();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_1df11f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_1df11f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000002286CC951D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002286CC951D0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002286CC951D0(6,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002929D116610(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl
index 2f7baf0..260436d 100644
--- a/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/1df11f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026F9F60ED30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020DC9B3D2E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.fxc.hlsl
index 30c289e..f43befc 100644
--- a/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.fxc.hlsl
@@ -5,42 +5,50 @@
   return asint(uint2((r.x & 0xffff) | ((r.y & 0xffff) << 16), (r.z & 0xffff) | ((r.w & 0xffff) << 16)));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_214f23() {
+int2 bitcast_214f23() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   int2 res = tint_bitcast_from_f16(arg_0);
-  prevent_dce.Store2(0u, asuint(res));
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_214f23();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_214f23();
+  prevent_dce.Store2(0u, asuint(bitcast_214f23()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_214f23();
+  prevent_dce.Store2(0u, asuint(bitcast_214f23()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int2 prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int2 prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_214f23();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028AA8921CC0(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000028AA8921CC0(2,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x0000028AA8921CC0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001E77A2F6FB0(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E77A2F6FB0(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001E77A2F6FB0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.ir.fxc.hlsl
index 1d0ade3..8abfead 100644
--- a/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/214f23.wgsl.expected.ir.fxc.hlsl
@@ -49,7 +49,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018E63512F60(13,35-43): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000018E63512F60(14,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x0000018E63512F60(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000002436BD87FD0(13,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002436BD87FD0(14,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000002436BD87FD0(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.fxc.hlsl
index eb7b57f..fb52173 100644
--- a/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.fxc.hlsl
@@ -5,42 +5,50 @@
   return asfloat(uint((r.x & 0xffff) | ((r.y & 0xffff) << 16)));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_23c8bd() {
+float bitcast_23c8bd() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   float res = tint_bitcast_from_f16(arg_0);
-  prevent_dce.Store(0u, asuint(res));
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_23c8bd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_23c8bd();
+  prevent_dce.Store(0u, asuint(bitcast_23c8bd()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_23c8bd();
+  prevent_dce.Store(0u, asuint(bitcast_23c8bd()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_23c8bd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000002397E150600(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002397E150600(2,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000002397E150600(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001DEEE3CA9B0(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DEEE3CA9B0(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001DEEE3CA9B0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.ir.fxc.hlsl
index d2a4a91..dcd716f 100644
--- a/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/23c8bd.wgsl.expected.ir.fxc.hlsl
@@ -49,7 +49,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014373483880(13,36-44): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000014373483880(14,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x0000014373483880(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000017980376610(13,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017980376610(14,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000017980376610(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.fxc.hlsl
index 9797a78..b1cd636 100644
--- a/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.fxc.hlsl
@@ -5,42 +5,50 @@
   return asfloat(uint2((r.x & 0xffff) | ((r.y & 0xffff) << 16), (r.z & 0xffff) | ((r.w & 0xffff) << 16)));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_2a6e58() {
+float2 bitcast_2a6e58() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   float2 res = tint_bitcast_from_f16(arg_0);
-  prevent_dce.Store2(0u, asuint(res));
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_2a6e58();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_2a6e58();
+  prevent_dce.Store2(0u, asuint(bitcast_2a6e58()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_2a6e58();
+  prevent_dce.Store2(0u, asuint(bitcast_2a6e58()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float2 prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float2 prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_2a6e58();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DC4B661CC0(1,37-45): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001DC4B661CC0(2,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001DC4B661CC0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001967DF75780(1,37-45): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001967DF75780(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001967DF75780(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.ir.fxc.hlsl
index b6eb48d..51db510 100644
--- a/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/2a6e58.wgsl.expected.ir.fxc.hlsl
@@ -49,7 +49,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017D1BB5ED10(13,37-45): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000017D1BB5ED10(14,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x0000017D1BB5ED10(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000029A12C3BBD0(13,37-45): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029A12C3BBD0(14,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000029A12C3BBD0(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.fxc.hlsl
index d513851..a57a272 100644
--- a/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.fxc.hlsl
@@ -1,41 +1,47 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_3e7b47() {
+vector<float16_t, 4> bitcast_3e7b47() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = arg_0;
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_3e7b47();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_3e7b47();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_3e7b47());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_3e7b47();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_3e7b47());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_3e7b47();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000002727ADE51D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002727ADE51D0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002727ADE51D0(6,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001B78F727F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl
index 42a1151..f3c4e42 100644
--- a/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/3e7b47.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C77511F2E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014EECB365A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.fxc.hlsl
index 7cc7a76..37d466e 100644
--- a/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.fxc.hlsl
@@ -7,40 +7,48 @@
   return vector<float16_t, 4>(t_low.x, t_high.x, t_low.y, t_high.y);
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_429d64() {
+vector<float16_t, 4> bitcast_429d64() {
   float2 arg_0 = (1.0f).xx;
   vector<float16_t, 4> res = tint_bitcast_to_f16(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_429d64();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_429d64();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_429d64());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_429d64();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_429d64());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_429d64();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E7FB241CC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001476EAA8E50(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.ir.fxc.hlsl
index 4f8c3c7..ce85287 100644
--- a/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/429d64.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D58208E710(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020B8D886630(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.fxc.hlsl
index 1febfea..ad8c006 100644
--- a/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.fxc.hlsl
@@ -1,40 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_436211() {
+float16_t bitcast_436211() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = arg_0;
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_436211();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_436211();
+  prevent_dce.Store<float16_t>(0u, bitcast_436211());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_436211();
+  prevent_dce.Store<float16_t>(0u, bitcast_436211());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_436211();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000002296BCE02B0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000002296BCE02B0(4,13-17): error X3000: unrecognized identifier 'arg_0'
+C:\src\dawn\Shader@0x0000024E0A72B7C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.ir.fxc.hlsl
index 09fe382..a8fae04 100644
--- a/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/436211.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A371B0F7C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000164505B38F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.fxc.hlsl
index c101572..4314f60 100644
--- a/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.fxc.hlsl
@@ -1,41 +1,47 @@
 SKIP: INVALID
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_5081ed() {
+vector<float16_t, 3> bitcast_5081ed() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = arg_0;
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_5081ed();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_5081ed();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, bitcast_5081ed());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_5081ed();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, bitcast_5081ed());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_5081ed();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x00000205CAE651D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000205CAE651D0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000205CAE651D0(6,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001445AA15780(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl
index 739b76a..27b83a8 100644
--- a/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/5081ed.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000163671EF7F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FAF0A9F050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.fxc.hlsl
index 0c176d5..13d56f4 100644
--- a/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.fxc.hlsl
@@ -7,40 +7,48 @@
   return vector<float16_t, 2>(t_low.x, t_high.x);
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_66e93d() {
+vector<float16_t, 2> bitcast_66e93d() {
   uint arg_0 = 1u;
   vector<float16_t, 2> res = tint_bitcast_to_f16(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_66e93d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_66e93d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_66e93d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_66e93d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_66e93d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_66e93d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000002234AD11CC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C52EB79860(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl
index 89ef6a6..5b90047 100644
--- a/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/66e93d.wgsl.expected.ir.fxc.hlsl
@@ -52,5 +52,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028FBF48ED20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A90CF15750(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.fxc.hlsl
index f7f9e2c..3cd5657 100644
--- a/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.fxc.hlsl
@@ -7,40 +7,48 @@
   return vector<float16_t, 2>(t_low.x, t_high.x);
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_674557() {
+vector<float16_t, 2> bitcast_674557() {
   int arg_0 = 1;
   vector<float16_t, 2> res = tint_bitcast_to_f16(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_674557();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_674557();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_674557());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_674557();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_674557());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_674557();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021A89C11CC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B02B7665C0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.ir.fxc.hlsl
index 79e275f..d3358b7 100644
--- a/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/674557.wgsl.expected.ir.fxc.hlsl
@@ -52,5 +52,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025697E55050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026D5698B6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.fxc.hlsl
index bce0b26..8c3cf6f 100644
--- a/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.fxc.hlsl
@@ -5,42 +5,50 @@
   return asint(uint((r.x & 0xffff) | ((r.y & 0xffff) << 16)));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_6ac6f9() {
+int bitcast_6ac6f9() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   int res = tint_bitcast_from_f16(arg_0);
-  prevent_dce.Store(0u, asuint(res));
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_6ac6f9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_6ac6f9();
+  prevent_dce.Store(0u, asuint(bitcast_6ac6f9()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_6ac6f9();
+  prevent_dce.Store(0u, asuint(bitcast_6ac6f9()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_6ac6f9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E5909102B0(1,34-42): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001E5909102B0(2,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001E5909102B0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000024C8B965750(1,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024C8B965750(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000024C8B965750(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.ir.fxc.hlsl
index 84a240e..a05234e 100644
--- a/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/6ac6f9.wgsl.expected.ir.fxc.hlsl
@@ -49,7 +49,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000208C4C75F70(13,34-42): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000208C4C75F70(14,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x00000208C4C75F70(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x00000187F728A670(13,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000187F728A670(14,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x00000187F728A670(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.fxc.hlsl
index d8436ae..2c0ef61 100644
--- a/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.fxc.hlsl
@@ -7,40 +7,48 @@
   return vector<float16_t, 4>(t_low.x, t_high.x, t_low.y, t_high.y);
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_71c92a() {
+vector<float16_t, 4> bitcast_71c92a() {
   int2 arg_0 = (1).xx;
   vector<float16_t, 4> res = tint_bitcast_to_f16(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_71c92a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_71c92a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_71c92a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_71c92a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_71c92a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_71c92a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022008B91CC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C7D81F8F80(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl
index 57c3c0d..f476e66f 100644
--- a/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/71c92a.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BEF5CCE800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E08093B680(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.fxc.hlsl
index 85d3271..07a83ac 100644
--- a/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.fxc.hlsl
@@ -5,42 +5,50 @@
   return asuint(uint2((r.x & 0xffff) | ((r.y & 0xffff) << 16), (r.z & 0xffff) | ((r.w & 0xffff) << 16)));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_81c5f5() {
+uint2 bitcast_81c5f5() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   uint2 res = tint_bitcast_from_f16(arg_0);
-  prevent_dce.Store2(0u, asuint(res));
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_81c5f5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_81c5f5();
+  prevent_dce.Store2(0u, asuint(bitcast_81c5f5()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_81c5f5();
+  prevent_dce.Store2(0u, asuint(bitcast_81c5f5()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  uint2 prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation uint2 prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_81c5f5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016B28511CC0(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000016B28511CC0(2,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x0000016B28511CC0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000002C8923B6510(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002C8923B6510(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000002C8923B6510(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.ir.fxc.hlsl
index 6bdb679..2907712 100644
--- a/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/81c5f5.wgsl.expected.ir.fxc.hlsl
@@ -49,7 +49,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000240FA53EBC0(13,36-44): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000240FA53EBC0(14,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x00000240FA53EBC0(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x00000155C56EAC60(13,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000155C56EAC60(14,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x00000155C56EAC60(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.fxc.hlsl
index 78dbe73..2dd36a3 100644
--- a/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.fxc.hlsl
@@ -7,40 +7,48 @@
   return vector<float16_t, 2>(t_low.x, t_high.x);
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_9ca42c() {
+vector<float16_t, 2> bitcast_9ca42c() {
   float arg_0 = 1.0f;
   vector<float16_t, 2> res = tint_bitcast_to_f16(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_9ca42c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_9ca42c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_9ca42c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_9ca42c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, bitcast_9ca42c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_9ca42c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025E98171CC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001830A768E50(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl
index de6d64b..6c7ffce 100644
--- a/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/9ca42c.wgsl.expected.ir.fxc.hlsl
@@ -52,5 +52,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ED318AEFC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024BB4E450E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.fxc.hlsl
index 9ba1896..de9610c 100644
--- a/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.fxc.hlsl
@@ -5,42 +5,50 @@
   return asuint(uint((r.x & 0xffff) | ((r.y & 0xffff) << 16)));
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_a58b50() {
+uint bitcast_a58b50() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   uint res = tint_bitcast_from_f16(arg_0);
-  prevent_dce.Store(0u, asuint(res));
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_a58b50();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_a58b50();
+  prevent_dce.Store(0u, asuint(bitcast_a58b50()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_a58b50();
+  prevent_dce.Store(0u, asuint(bitcast_a58b50()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  uint prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation uint prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_a58b50();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DC1BC302B0(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001DC1BC302B0(2,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001DC1BC302B0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001D09B2D4F70(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D09B2D4F70(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001D09B2D4F70(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.ir.fxc.hlsl
index 3d5233c..ac8a6cf1 100644
--- a/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/a58b50.wgsl.expected.ir.fxc.hlsl
@@ -49,7 +49,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002280F2FEF50(13,35-43): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002280F2FEF50(14,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000002280F2FEF50(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001F7AE926690(13,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F7AE926690(14,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001F7AE926690(14,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.fxc.hlsl
index 4c8065d..f25a08d 100644
--- a/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.fxc.hlsl
@@ -7,40 +7,48 @@
   return vector<float16_t, 4>(t_low.x, t_high.x, t_low.y, t_high.y);
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void bitcast_bc3994() {
+vector<float16_t, 4> bitcast_bc3994() {
   uint2 arg_0 = (1u).xx;
   vector<float16_t, 4> res = tint_bitcast_to_f16(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  bitcast_bc3994();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  bitcast_bc3994();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_bc3994());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  bitcast_bc3994();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, bitcast_bc3994());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = bitcast_bc3994();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C583CA1CC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DA64785780(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl
index 3292702..6b53b75 100644
--- a/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/bitcast/bc3994.wgsl.expected.ir.fxc.hlsl
@@ -56,5 +56,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002191EF65050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017D15D95100(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.fxc.hlsl
index 189a30c..aabe680 100644
--- a/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_09bf52() {
+vector<float16_t, 3> ceil_09bf52() {
   vector<float16_t, 3> arg_0 = (float16_t(1.5h)).xxx;
   vector<float16_t, 3> res = ceil(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_09bf52();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_09bf52();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ceil_09bf52());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_09bf52();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ceil_09bf52());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_09bf52();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D3A8285750(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.fxc.hlsl
index 9973736..9dd044e 100644
--- a/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AF4736F250(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E4C0E37FD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.fxc.hlsl
index 3299498..2515295 100644
--- a/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_18c240() {
+vector<float16_t, 2> ceil_18c240() {
   vector<float16_t, 2> arg_0 = (float16_t(1.5h)).xx;
   vector<float16_t, 2> res = ceil(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_18c240();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_18c240();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ceil_18c240());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_18c240();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ceil_18c240());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_18c240();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000240480863F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.fxc.hlsl
index 6b8cc8c..700595e 100644
--- a/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023C8A2E7070(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022E0F4D8F20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.fxc.hlsl
index a59760b..88e3b3d 100644
--- a/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_4bca2a() {
+vector<float16_t, 4> ceil_4bca2a() {
   vector<float16_t, 4> arg_0 = (float16_t(1.5h)).xxxx;
   vector<float16_t, 4> res = ceil(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_4bca2a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_4bca2a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ceil_4bca2a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_4bca2a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ceil_4bca2a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_4bca2a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000174D8A69AB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl
index b0ffd2c..6f0e61a 100644
--- a/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001607D96ED30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000277D0045230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.fxc.hlsl
index e28f1a5..4ac4149 100644
--- a/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ceil_f3f889() {
+float16_t ceil_f3f889() {
   float16_t arg_0 = float16_t(1.5h);
   float16_t res = ceil(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ceil_f3f889();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ceil_f3f889();
+  prevent_dce.Store<float16_t>(0u, ceil_f3f889());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ceil_f3f889();
+  prevent_dce.Store<float16_t>(0u, ceil_f3f889());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ceil_f3f889();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000276553F6C30(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.fxc.hlsl
index b45653b..3fc52f5 100644
--- a/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000263A1BA0180(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C80745A220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.fxc.hlsl
index 2c3f9cf..0118bef 100644
--- a/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_235b29() {
+vector<float16_t, 2> clamp_235b29() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_2 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = clamp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_235b29();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_235b29();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, clamp_235b29());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_235b29();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, clamp_235b29());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_235b29();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E6625B9410(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.fxc.hlsl
index 82fd070..7ad9c76 100644
--- a/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E5409960A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025142A44FB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.fxc.hlsl
index 1ebf0b0..33b8892 100644
--- a/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_2c251b() {
+vector<float16_t, 4> clamp_2c251b() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_2 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = clamp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_2c251b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_2c251b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, clamp_2c251b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_2c251b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, clamp_2c251b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_2c251b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DDB70B6580(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.fxc.hlsl
index 18f750e..0997cab 100644
--- a/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016DCD3E0970(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025328394D00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.fxc.hlsl
index ac4f6eb..ba64ad3 100644
--- a/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_553ffb() {
+float16_t clamp_553ffb() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t arg_2 = float16_t(1.0h);
   float16_t res = clamp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_553ffb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_553ffb();
+  prevent_dce.Store<float16_t>(0u, clamp_553ffb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_553ffb();
+  prevent_dce.Store<float16_t>(0u, clamp_553ffb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_553ffb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000230F7A664C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.fxc.hlsl
index c55db72..ed27b9f 100644
--- a/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C134940930(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001A14C895DE0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.fxc.hlsl
index 5589458..c743eec 100644
--- a/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void clamp_b195eb() {
+vector<float16_t, 3> clamp_b195eb() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_2 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = clamp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  clamp_b195eb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  clamp_b195eb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, clamp_b195eb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  clamp_b195eb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, clamp_b195eb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = clamp_b195eb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B5022065E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.fxc.hlsl
index 1df9a93..aab4464 100644
--- a/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022E02BF0FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000298872DB780(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.fxc.hlsl
index 17ef763..c6ceab1 100644
--- a/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_0835a8() {
+vector<float16_t, 3> cos_0835a8() {
   vector<float16_t, 3> arg_0 = (float16_t(0.0h)).xxx;
   vector<float16_t, 3> res = cos(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_0835a8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_0835a8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cos_0835a8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_0835a8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cos_0835a8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_0835a8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B58F636780(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.fxc.hlsl
index 60b5598..bd03e45 100644
--- a/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018195015E50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000204A9982520(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.fxc.hlsl
index 17f76de..98be3a9 100644
--- a/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_0a89f7() {
+vector<float16_t, 4> cos_0a89f7() {
   vector<float16_t, 4> arg_0 = (float16_t(0.0h)).xxxx;
   vector<float16_t, 4> res = cos(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_0a89f7();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_0a89f7();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cos_0a89f7());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_0a89f7();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cos_0a89f7());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_0a89f7();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025BDC91D370(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.fxc.hlsl
index 6c2ce8f..45f58fc 100644
--- a/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C1EFE9ED00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021642334F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.fxc.hlsl
index ac593aa..c1eef57 100644
--- a/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_5bc2c6() {
+vector<float16_t, 2> cos_5bc2c6() {
   vector<float16_t, 2> arg_0 = (float16_t(0.0h)).xx;
   vector<float16_t, 2> res = cos(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_5bc2c6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_5bc2c6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cos_5bc2c6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_5bc2c6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cos_5bc2c6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_5bc2c6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015526C95DF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl
index 5353826..199ff15 100644
--- a/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002E2DDE5ED00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028DB8400B30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.fxc.hlsl
index 65bef84..d4b00df 100644
--- a/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cos_fc047d() {
+float16_t cos_fc047d() {
   float16_t arg_0 = float16_t(0.0h);
   float16_t res = cos(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cos_fc047d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cos_fc047d();
+  prevent_dce.Store<float16_t>(0u, cos_fc047d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cos_fc047d();
+  prevent_dce.Store<float16_t>(0u, cos_fc047d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cos_fc047d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C92B765DF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.fxc.hlsl
index ff0b06b..6a03389 100644
--- a/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000255EB515460(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000276238861A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.fxc.hlsl
index 19dc5bd..0682e1f 100644
--- a/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_2ed778() {
+float16_t cosh_2ed778() {
   float16_t arg_0 = float16_t(0.0h);
   float16_t res = cosh(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_2ed778();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_2ed778();
+  prevent_dce.Store<float16_t>(0u, cosh_2ed778());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_2ed778();
+  prevent_dce.Store<float16_t>(0u, cosh_2ed778());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_2ed778();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000277AD816120(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.fxc.hlsl
index 760c270..c8235cd 100644
--- a/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002F415A7FC10(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001BE54C838D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.fxc.hlsl
index 26510e6..e5fcd29 100644
--- a/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_3b7bbf() {
+vector<float16_t, 4> cosh_3b7bbf() {
   vector<float16_t, 4> arg_0 = (float16_t(0.0h)).xxxx;
   vector<float16_t, 4> res = cosh(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_3b7bbf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_3b7bbf();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cosh_3b7bbf());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_3b7bbf();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, cosh_3b7bbf());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_3b7bbf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000229581664C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl
index 18647c6..d7bf41a 100644
--- a/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002016236FFB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AA2CDF9530(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.fxc.hlsl
index 1cffff7..3083851 100644
--- a/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_43b672() {
+vector<float16_t, 2> cosh_43b672() {
   vector<float16_t, 2> arg_0 = (float16_t(0.0h)).xx;
   vector<float16_t, 2> res = cosh(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_43b672();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_43b672();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cosh_43b672());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_43b672();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, cosh_43b672());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_43b672();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021AB4706610(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.fxc.hlsl
index 3f48124..a94cb18 100644
--- a/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017920523B80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020FF60116E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.fxc.hlsl
index 03bc142..95a7210 100644
--- a/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cosh_b1b8a0() {
+vector<float16_t, 3> cosh_b1b8a0() {
   vector<float16_t, 3> arg_0 = (float16_t(0.0h)).xxx;
   vector<float16_t, 3> res = cosh(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cosh_b1b8a0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cosh_b1b8a0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cosh_b1b8a0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cosh_b1b8a0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cosh_b1b8a0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cosh_b1b8a0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C04BF0FD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl
index 1c39e3e..7490eea 100644
--- a/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000191AFFE1660(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000161AF598F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.fxc.hlsl
index 00b2910..90e0891 100644
--- a/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void cross_9857cb() {
+vector<float16_t, 3> cross_9857cb() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = cross(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  cross_9857cb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  cross_9857cb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cross_9857cb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  cross_9857cb();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, cross_9857cb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = cross_9857cb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018AD5F86620(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.fxc.hlsl
index 9aa2f18..33627b0 100644
--- a/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BDD6575030(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000263F921B6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.fxc.hlsl
index 32f84dc..6096237 100644
--- a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 57.29577951308232286465;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_3055d3() {
+vector<float16_t, 4> degrees_3055d3() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = tint_degrees(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_3055d3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_3055d3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, degrees_3055d3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_3055d3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, degrees_3055d3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_3055d3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021E71135FC0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.fxc.hlsl
index f1aade5..a6a956f 100644
--- a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002E0B46EFBB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025E8DD448A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.fxc.hlsl
index ab23597..7837df5 100644
--- a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 57.29577951308232286465;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_5e9805() {
+float16_t degrees_5e9805() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = tint_degrees(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_5e9805();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_5e9805();
+  prevent_dce.Store<float16_t>(0u, degrees_5e9805());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_5e9805();
+  prevent_dce.Store<float16_t>(0u, degrees_5e9805());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_5e9805();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FE093CBEF0(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.fxc.hlsl
index 3bd131e..14ea6ad 100644
--- a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002048AE7FBC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000027A9E364C70(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.fxc.hlsl
index 59879a2..eaa0140 100644
--- a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 57.29577951308232286465;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_dfe8f4() {
+vector<float16_t, 3> degrees_dfe8f4() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = tint_degrees(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_dfe8f4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_dfe8f4();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, degrees_dfe8f4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_dfe8f4();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, degrees_dfe8f4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_dfe8f4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022CDDFA65C0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl
index d2e1058..f55d5d9 100644
--- a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000272678867C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016AAF78B3E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.fxc.hlsl
index dec4ccb..8de7404 100644
--- a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 57.29577951308232286465;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void degrees_f59715() {
+vector<float16_t, 2> degrees_f59715() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = tint_degrees(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  degrees_f59715();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  degrees_f59715();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, degrees_f59715());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  degrees_f59715();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, degrees_f59715());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = degrees_f59715();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AA1C1DFE90(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.fxc.hlsl
index d3870e3..c3bd7c5 100644
--- a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025F134AED10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BD87B05520(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.fxc.hlsl
index 2e01c7a..709b8b0 100644
--- a/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void determinant_32bfde() {
+float16_t determinant_32bfde() {
   matrix<float16_t, 4, 4> arg_0 = matrix<float16_t, 4, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
   float16_t res = determinant(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  determinant_32bfde();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  determinant_32bfde();
+  prevent_dce.Store<float16_t>(0u, determinant_32bfde());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  determinant_32bfde();
+  prevent_dce.Store<float16_t>(0u, determinant_32bfde());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = determinant_32bfde();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000207D8938F80(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.fxc.hlsl
index 45d6e5c..be17111 100644
--- a/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A192365070(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021B88366220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.fxc.hlsl
index a0f3431..3111c3a 100644
--- a/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void determinant_d7c86f() {
+float16_t determinant_d7c86f() {
   matrix<float16_t, 3, 3> arg_0 = matrix<float16_t, 3, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
   float16_t res = determinant(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  determinant_d7c86f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  determinant_d7c86f();
+  prevent_dce.Store<float16_t>(0u, determinant_d7c86f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  determinant_d7c86f();
+  prevent_dce.Store<float16_t>(0u, determinant_d7c86f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = determinant_d7c86f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001621EB757C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl
index c67b66d..6a26d48 100644
--- a/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D73F8B5060(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017F9803B700(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.fxc.hlsl
index b31a601..c35064c 100644
--- a/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void determinant_fc12a5() {
+float16_t determinant_fc12a5() {
   matrix<float16_t, 2, 2> arg_0 = matrix<float16_t, 2, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
   float16_t res = determinant(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  determinant_fc12a5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  determinant_fc12a5();
+  prevent_dce.Store<float16_t>(0u, determinant_fc12a5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  determinant_fc12a5();
+  prevent_dce.Store<float16_t>(0u, determinant_fc12a5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = determinant_fc12a5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002052D5B5770(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl
index 1874816..1f22e23 100644
--- a/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000281B259E380(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000234D5616630(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.fxc.hlsl
index e9f331a..67364b9 100644
--- a/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_7272f3() {
+float16_t distance_7272f3() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   float16_t res = distance(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_7272f3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_7272f3();
+  prevent_dce.Store<float16_t>(0u, distance_7272f3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_7272f3();
+  prevent_dce.Store<float16_t>(0u, distance_7272f3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_7272f3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E8D813BA40(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.fxc.hlsl
index c5493c6..bc5ad6ec 100644
--- a/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000144D9B0EE10(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000260E0C2E050(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.fxc.hlsl
index 6e8f923..44d986b 100644
--- a/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_7d201f() {
+float16_t distance_7d201f() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t res = distance(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_7d201f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_7d201f();
+  prevent_dce.Store<float16_t>(0u, distance_7d201f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_7d201f();
+  prevent_dce.Store<float16_t>(0u, distance_7d201f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_7d201f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B64B3B5A60(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.fxc.hlsl
index baa021a..fad9dcc 100644
--- a/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C964535490(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001DA42834750(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.fxc.hlsl
index 7a85c04..b2bdffd 100644
--- a/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_892a5d() {
+float16_t distance_892a5d() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   float16_t res = distance(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_892a5d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_892a5d();
+  prevent_dce.Store<float16_t>(0u, distance_892a5d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_892a5d();
+  prevent_dce.Store<float16_t>(0u, distance_892a5d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_892a5d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002F35E8C4290(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.fxc.hlsl
index 7f9b60f..4f39fb0 100644
--- a/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000208ACF9EB50(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002697A644730(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.fxc.hlsl
index ba84e32..a83292f 100644
--- a/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void distance_928fa0() {
+float16_t distance_928fa0() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   float16_t res = distance(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  distance_928fa0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  distance_928fa0();
+  prevent_dce.Store<float16_t>(0u, distance_928fa0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  distance_928fa0();
+  prevent_dce.Store<float16_t>(0u, distance_928fa0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = distance_928fa0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B6A41A5770(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.fxc.hlsl
index 7a9cd16..c6e4b96 100644
--- a/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000157B1D2EE30(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D1C6004300(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.fxc.hlsl
index 5dcb619..fc5eb1d 100644
--- a/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void dot_8e40f1() {
+float16_t dot_8e40f1() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   float16_t res = dot(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  dot_8e40f1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  dot_8e40f1();
+  prevent_dce.Store<float16_t>(0u, dot_8e40f1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  dot_8e40f1();
+  prevent_dce.Store<float16_t>(0u, dot_8e40f1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = dot_8e40f1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000010E36FEFC90(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.fxc.hlsl
index ba16a8c..8a6e601 100644
--- a/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027CF44A2330(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000019E30B041D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.fxc.hlsl
index 53945e1..a4c049b 100644
--- a/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void dot_cd5a04() {
+float16_t dot_cd5a04() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   float16_t res = dot(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  dot_cd5a04();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  dot_cd5a04();
+  prevent_dce.Store<float16_t>(0u, dot_cd5a04());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  dot_cd5a04();
+  prevent_dce.Store<float16_t>(0u, dot_cd5a04());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = dot_cd5a04();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F7D9B276C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.fxc.hlsl
index 1a286ec..fa06d74 100644
--- a/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002895579E700(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000273BD08CC20(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.fxc.hlsl
index cbac95a..a880651 100644
--- a/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void dot_d0d179() {
+float16_t dot_d0d179() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   float16_t res = dot(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  dot_d0d179();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  dot_d0d179();
+  prevent_dce.Store<float16_t>(0u, dot_d0d179());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  dot_d0d179();
+  prevent_dce.Store<float16_t>(0u, dot_d0d179());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = dot_d0d179();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E5F92F94A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.fxc.hlsl
index 5fa6433..56eae62 100644
--- a/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020545105030(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EE786F9BB0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.fxc.hlsl
index aa77d59..06c8a59 100644
--- a/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_13806d() {
+vector<float16_t, 3> exp_13806d() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = exp(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_13806d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_13806d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp_13806d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_13806d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp_13806d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_13806d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B2D2B863B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.fxc.hlsl
index 98dab48..114b3a5 100644
--- a/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022A26D856E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C8BAA88F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.fxc.hlsl
index 9fef94a..47af7d7 100644
--- a/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_2e08e2() {
+vector<float16_t, 2> exp_2e08e2() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = exp(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_2e08e2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_2e08e2();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp_2e08e2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_2e08e2();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp_2e08e2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_2e08e2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EDD5529EB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.fxc.hlsl
index b0c6d92..b480fda 100644
--- a/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015E62F9FCE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C7D266E090(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.fxc.hlsl
index 210d0ae..d5b6162 100644
--- a/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_611a87() {
+vector<float16_t, 4> exp_611a87() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = exp(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_611a87();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_611a87();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp_611a87());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_611a87();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp_611a87());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_611a87();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F58F9064E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.fxc.hlsl
index c630a1b..d8dd0a9 100644
--- a/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029EA3260480(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CB003045D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.fxc.hlsl
index 66f50e2..5f23d08 100644
--- a/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp_c18fe9() {
+float16_t exp_c18fe9() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = exp(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp_c18fe9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp_c18fe9();
+  prevent_dce.Store<float16_t>(0u, exp_c18fe9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp_c18fe9();
+  prevent_dce.Store<float16_t>(0u, exp_c18fe9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp_c18fe9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029125060C90(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.fxc.hlsl
index 2613d56..2861e48 100644
--- a/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002953238E660(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000215FF4DB6F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.fxc.hlsl
index a93a134..09e2da3 100644
--- a/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_151a4c() {
+vector<float16_t, 2> exp2_151a4c() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = exp2(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_151a4c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_151a4c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp2_151a4c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_151a4c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, exp2_151a4c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_151a4c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000292B38576A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.fxc.hlsl
index 7b2528d..fbc2db3 100644
--- a/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000299A570E5A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DCB9E36600(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.fxc.hlsl
index b4a7b8f..af43619 100644
--- a/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_751377() {
+vector<float16_t, 3> exp2_751377() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = exp2(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_751377();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_751377();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp2_751377());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_751377();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, exp2_751377());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_751377();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002131386B3C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.fxc.hlsl
index 3421e87..b30159d 100644
--- a/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F6D879ED00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A231016630(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.fxc.hlsl
index 8080c85..e8f9885 100644
--- a/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_b408e4() {
+float16_t exp2_b408e4() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = exp2(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_b408e4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_b408e4();
+  prevent_dce.Store<float16_t>(0u, exp2_b408e4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_b408e4();
+  prevent_dce.Store<float16_t>(0u, exp2_b408e4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_b408e4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D6E7516CF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.fxc.hlsl
index 6bd523ab..2110ec0 100644
--- a/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A786E3F360(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E2061D38B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.fxc.hlsl
index 0b8eb7d..2e5ff34 100644
--- a/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void exp2_ffa827() {
+vector<float16_t, 4> exp2_ffa827() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = exp2(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  exp2_ffa827();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  exp2_ffa827();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp2_ffa827());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  exp2_ffa827();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, exp2_ffa827());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = exp2_ffa827();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A127E0D020(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.fxc.hlsl
index 4d9782a..4d58340 100644
--- a/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F7878EF9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021C056165F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.fxc.hlsl
index ab717a9..e62328d 100644
--- a/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void faceForward_524986() {
+vector<float16_t, 3> faceForward_524986() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_2 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = faceforward(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  faceForward_524986();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  faceForward_524986();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, faceForward_524986());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  faceForward_524986();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, faceForward_524986());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = faceForward_524986();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000267A0C7BBB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.fxc.hlsl
index 2acdf84..81965bf 100644
--- a/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D52B12F060(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016ADCD797E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.fxc.hlsl
index 5257819..207b82f 100644
--- a/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void faceForward_cc63dc() {
+vector<float16_t, 4> faceForward_cc63dc() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_2 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = faceforward(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  faceForward_cc63dc();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  faceForward_cc63dc();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, faceForward_cc63dc());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  faceForward_cc63dc();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, faceForward_cc63dc());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = faceForward_cc63dc();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F00286E0A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl
index c654ed3..585a33e 100644
--- a/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027B6F9B08B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000209FF988A90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.fxc.hlsl
index c604f00..3b325b6 100644
--- a/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void faceForward_fb0f2e() {
+vector<float16_t, 2> faceForward_fb0f2e() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_2 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = faceforward(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  faceForward_fb0f2e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  faceForward_fb0f2e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, faceForward_fb0f2e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  faceForward_fb0f2e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, faceForward_fb0f2e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = faceForward_fb0f2e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000276969857F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl
index de345f4..c9f127f 100644
--- a/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002102AB36080(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000205B1429420(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.fxc.hlsl
index 2fa208a..0c88111 100644
--- a/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_3802c0() {
+vector<float16_t, 3> floor_3802c0() {
   vector<float16_t, 3> arg_0 = (float16_t(1.5h)).xxx;
   vector<float16_t, 3> res = floor(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_3802c0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_3802c0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, floor_3802c0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_3802c0();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, floor_3802c0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_3802c0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002065B86D390(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.fxc.hlsl
index 791a5cc..b4e5cff 100644
--- a/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028851FEE7C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021148F35970(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.fxc.hlsl
index 196909f..9d70b92 100644
--- a/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_84658c() {
+vector<float16_t, 2> floor_84658c() {
   vector<float16_t, 2> arg_0 = (float16_t(1.5h)).xx;
   vector<float16_t, 2> res = floor(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_84658c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_84658c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, floor_84658c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_84658c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, floor_84658c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_84658c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000181ECF666C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.fxc.hlsl
index f540541..89a5dba 100644
--- a/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002155C3A0890(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002240899C320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.fxc.hlsl
index 47973da..cd3ec97 100644
--- a/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_a2d31b() {
+vector<float16_t, 4> floor_a2d31b() {
   vector<float16_t, 4> arg_0 = (float16_t(1.5h)).xxxx;
   vector<float16_t, 4> res = floor(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_a2d31b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_a2d31b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, floor_a2d31b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_a2d31b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, floor_a2d31b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_a2d31b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DB8F10E070(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.fxc.hlsl
index e5783f3..d644454 100644
--- a/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020B97F373C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E62B954E70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.fxc.hlsl
index ef23db8..e8a83d8 100644
--- a/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void floor_b6e09c() {
+float16_t floor_b6e09c() {
   float16_t arg_0 = float16_t(1.5h);
   float16_t res = floor(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  floor_b6e09c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  floor_b6e09c();
+  prevent_dce.Store<float16_t>(0u, floor_b6e09c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  floor_b6e09c();
+  prevent_dce.Store<float16_t>(0u, floor_b6e09c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = floor_b6e09c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025863FCD4A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.fxc.hlsl
index 51c6bc4..a393b1c 100644
--- a/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019F7D235470(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000018BD986D070(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.fxc.hlsl
index 744fbf8..10f6bc9 100644
--- a/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_ab7818() {
+vector<float16_t, 4> fma_ab7818() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_2 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = mad(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_ab7818();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_ab7818();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fma_ab7818());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_ab7818();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fma_ab7818());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_ab7818();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022F9B036600(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.fxc.hlsl
index d6a9f82..e43298d 100644
--- a/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/ab7818.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D87B336080(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002532D2BB230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.fxc.hlsl
index 55e386e..888bfd2 100644
--- a/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_bf21b6() {
+vector<float16_t, 2> fma_bf21b6() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_2 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = mad(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_bf21b6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_bf21b6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fma_bf21b6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_bf21b6();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fma_bf21b6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_bf21b6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A319DE4090(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.fxc.hlsl
index b1c3bc6..22047a7 100644
--- a/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/bf21b6.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DF2F305500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028D206A9660(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.fxc.hlsl
index f3cd439..2cef57c 100644
--- a/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_c8abb3() {
+float16_t fma_c8abb3() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t arg_2 = float16_t(1.0h);
   float16_t res = mad(arg_0, arg_1, arg_2);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_c8abb3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_c8abb3();
+  prevent_dce.Store<float16_t>(0u, fma_c8abb3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_c8abb3();
+  prevent_dce.Store<float16_t>(0u, fma_c8abb3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_c8abb3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9D7AA68D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.fxc.hlsl
index 8cf0d7b..8b86273 100644
--- a/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/c8abb3.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011CFA1D5680(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001CBC6404820(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.fxc.hlsl
index 7ad75b6..15eae1c 100644
--- a/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fma_e7abdc() {
+vector<float16_t, 3> fma_e7abdc() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_2 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = mad(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fma_e7abdc();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fma_e7abdc();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fma_e7abdc());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fma_e7abdc();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fma_e7abdc());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fma_e7abdc();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021083789260(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.fxc.hlsl
index 56067ae..7b195e0 100644
--- a/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fma/e7abdc.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018718D760A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020876C14FB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.fxc.hlsl
index dcaebbf..2308391 100644
--- a/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_181aa9() {
+vector<float16_t, 2> fract_181aa9() {
   vector<float16_t, 2> arg_0 = (float16_t(1.25h)).xx;
   vector<float16_t, 2> res = frac(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_181aa9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_181aa9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fract_181aa9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_181aa9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, fract_181aa9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_181aa9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206670D4DA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.fxc.hlsl
index ccaa98e..a35eab6 100644
--- a/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FBDD555F90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000179B42BB3E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.fxc.hlsl
index 35bbed7f..73cdb77 100644
--- a/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_498c77() {
+vector<float16_t, 4> fract_498c77() {
   vector<float16_t, 4> arg_0 = (float16_t(1.25h)).xxxx;
   vector<float16_t, 4> res = frac(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_498c77();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_498c77();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fract_498c77());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_498c77();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, fract_498c77());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_498c77();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020B581DD2B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.fxc.hlsl
index ea95bc7..2838da9 100644
--- a/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014FEF070180(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B602134900(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.fxc.hlsl
index 18ada47..111adc2a 100644
--- a/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_958a1d() {
+vector<float16_t, 3> fract_958a1d() {
   vector<float16_t, 3> arg_0 = (float16_t(1.25h)).xxx;
   vector<float16_t, 3> res = frac(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_958a1d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_958a1d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fract_958a1d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_958a1d();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, fract_958a1d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_958a1d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AEFB5E66C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.fxc.hlsl
index 8c810a3..4546250 100644
--- a/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA931EEB30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029C81D04A20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.fxc.hlsl
index 7725359..78ff589 100644
--- a/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void fract_eb38ce() {
+float16_t fract_eb38ce() {
   float16_t arg_0 = float16_t(1.25h);
   float16_t res = frac(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  fract_eb38ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  fract_eb38ce();
+  prevent_dce.Store<float16_t>(0u, fract_eb38ce());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  fract_eb38ce();
+  prevent_dce.Store<float16_t>(0u, fract_eb38ce());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = fract_eb38ce();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002607D49A940(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.fxc.hlsl
index f28a08c..d8beba0 100644
--- a/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000227B53CE820(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002D75A41B6F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.fxc.hlsl
index d6b3d6f..3b45370 100644
--- a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.fxc.hlsl
@@ -6,7 +6,7 @@
 };
 frexp_result_vec4_f16 tint_frexp(vector<float16_t, 4> param_0) {
   vector<float16_t, 4> exp;
-  vector<float16_t, 4> fract = frexp(param_0, exp);
+  vector<float16_t, 4> fract = sign(param_0) * frexp(param_0, exp);
   frexp_result_vec4_f16 result = {fract, int4(exp)};
   return result;
 }
@@ -16,22 +16,6 @@
   frexp_result_vec4_f16 res = tint_frexp(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_3dd21e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_3dd21e();
   return;
@@ -42,3 +26,27 @@
   frexp_3dd21e();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_3dd21e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B9ECB2C2D0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl
index d9af119..e6327fc 100644
--- a/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/3dd21e.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F1EC0F0A80(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BEC3E238F0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.fxc.hlsl
index c8ffaea..e7ad8d8 100644
--- a/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/4b2200.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000140B0BE1FB0(17,26-37): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x00000140B0BE1FB0(17,26-37): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x00000140B0BE1FB0(17,26-37): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x000001DDF45AE070(17,26-37): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001DDF45AE070(17,26-37): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001DDF45AE070(17,26-37): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.fxc.hlsl
index 9672e1d..ef876e3 100644
--- a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.fxc.hlsl
@@ -6,7 +6,7 @@
 };
 frexp_result_f16 tint_frexp(float16_t param_0) {
   float16_t exp;
-  float16_t fract = frexp(param_0, exp);
+  float16_t fract = sign(param_0) * frexp(param_0, exp);
   frexp_result_f16 result = {fract, int(exp)};
   return result;
 }
@@ -16,22 +16,6 @@
   frexp_result_f16 res = tint_frexp(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_5257dd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_5257dd();
   return;
@@ -42,3 +26,27 @@
   frexp_5257dd();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_5257dd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021AB4874EE0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.fxc.hlsl
index f2a702b..e6640cf 100644
--- a/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/5257dd.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F6E37DFC0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C8E28438B0(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.fxc.hlsl
index 5f203b8..abff79c 100644
--- a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.fxc.hlsl
@@ -6,7 +6,7 @@
 };
 frexp_result_vec2_f16 tint_frexp(vector<float16_t, 2> param_0) {
   vector<float16_t, 2> exp;
-  vector<float16_t, 2> fract = frexp(param_0, exp);
+  vector<float16_t, 2> fract = sign(param_0) * frexp(param_0, exp);
   frexp_result_vec2_f16 result = {fract, int2(exp)};
   return result;
 }
@@ -16,22 +16,6 @@
   frexp_result_vec2_f16 res = tint_frexp(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_5f47bf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_5f47bf();
   return;
@@ -42,3 +26,27 @@
   frexp_5f47bf();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_5f47bf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214C7FAD240(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl
index c882558..4a11ee2 100644
--- a/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/5f47bf.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000230E5C20000(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002305D9DB700(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.fxc.hlsl
index 4afdb05..c839471 100644
--- a/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/77af93.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000257FAB606A0(17,31-42): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x00000257FAB606A0(17,31-42): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x00000257FAB606A0(17,31-42): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x000002F1024F72B0(17,31-42): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000002F1024F72B0(17,31-42): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000002F1024F72B0(17,31-42): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.fxc.hlsl
index e293661..ad9ca2f 100644
--- a/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/979800.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021982C9F9C0(17,31-42): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x0000021982C9F9C0(17,31-42): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x0000021982C9F9C0(17,31-42): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x000001A8B2595EC0(17,31-42): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001A8B2595EC0(17,31-42): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001A8B2595EC0(17,31-42): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.fxc.hlsl
index 133b5a6..05f05bf 100644
--- a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.fxc.hlsl
@@ -6,7 +6,7 @@
 };
 frexp_result_vec3_f16 tint_frexp(vector<float16_t, 3> param_0) {
   vector<float16_t, 3> exp;
-  vector<float16_t, 3> fract = frexp(param_0, exp);
+  vector<float16_t, 3> fract = sign(param_0) * frexp(param_0, exp);
   frexp_result_vec3_f16 result = {fract, int3(exp)};
   return result;
 }
@@ -16,22 +16,6 @@
   frexp_result_vec3_f16 res = tint_frexp(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  frexp_ae4a66();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   frexp_ae4a66();
   return;
@@ -42,3 +26,27 @@
   frexp_ae4a66();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  frexp_ae4a66();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001409798C030(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl
index 184f34f..749b499 100644
--- a/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/ae4a66.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017B1F8D5070(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000281D6A5B6E0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.fxc.hlsl
index 3009a2f..29be04f 100644
--- a/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/frexp/eb2421.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E92DA0D9E0(17,31-42): error X3013: 'frexp': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x000001E92DA0D9E0(17,31-42): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x000001E92DA0D9E0(17,31-42): error X3013:     frexp(float|half, out float|half exp)
+C:\src\dawn\Shader@0x000001CA673A6450(17,31-42): error X3013: 'frexp': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001CA673A6450(17,31-42): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001CA673A6450(17,31-42): error X3013:     frexp(float|half, out float|half exp)
 
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl
index b1f9cfc..32ca73e5 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.dxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<i32>;
 
-fn inputAttachmentLoad_315bf5() {
+fn inputAttachmentLoad_315bf5() -> vec4<i32> {
   var res : vec4<i32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_315bf5();
+  prevent_dce = inputAttachmentLoad_315bf5();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl
index b1f9cfc..32ca73e5 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.fxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<i32>;
 
-fn inputAttachmentLoad_315bf5() {
+fn inputAttachmentLoad_315bf5() -> vec4<i32> {
   var res : vec4<i32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<i32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_315bf5();
+  prevent_dce = inputAttachmentLoad_315bf5();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl
index 502b482..3b03801 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl
index 0972091..3b03801 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/315bf5.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1051 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl
index c40fd88..bf3a5dd 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.dxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<f32>;
 
-fn inputAttachmentLoad_c38b2f() {
+fn inputAttachmentLoad_c38b2f() -> vec4<f32> {
   var res : vec4<f32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_c38b2f();
+  prevent_dce = inputAttachmentLoad_c38b2f();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl
index c40fd88..bf3a5dd 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.fxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<f32>;
 
-fn inputAttachmentLoad_c38b2f() {
+fn inputAttachmentLoad_c38b2f() -> vec4<f32> {
   var res : vec4<f32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<f32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_c38b2f();
+  prevent_dce = inputAttachmentLoad_c38b2f();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl
index 502b482..3b03801 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl
index 0972091..3b03801 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/c38b2f.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1051 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl
index ef2e2b3..eb23ad3 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.dxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<u32>;
 
-fn inputAttachmentLoad_fc4d97() {
+fn inputAttachmentLoad_fc4d97() -> vec4<u32> {
   var res : vec4<u32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_fc4d97();
+  prevent_dce = inputAttachmentLoad_fc4d97();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl
index ef2e2b3..eb23ad3 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.fxc.hlsl
@@ -3,18 +3,18 @@
 
 enable chromium_internal_input_attachments;
 
+@group(0) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
+
 @input_attachment_index(3) @group(1) @binding(0) var arg_0 : input_attachment<u32>;
 
-fn inputAttachmentLoad_fc4d97() {
+fn inputAttachmentLoad_fc4d97() -> vec4<u32> {
   var res : vec4<u32> = inputAttachmentLoad(arg_0);
-  prevent_dce = res;
+  return res;
 }
 
-@group(2) @binding(0) var<storage, read_write> prevent_dce : vec4<u32>;
-
 @fragment
 fn fragment_main() {
-  inputAttachmentLoad_fc4d97();
+  prevent_dce = inputAttachmentLoad_fc4d97();
 }
 
 Failed to generate: <dawn>/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl:38:8 error: HLSL backend does not support extension 'chromium_internal_input_attachments'
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl
index 502b482..3b03801 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl
index 0972091..3b03801 100644
--- a/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inputAttachmentLoad/fc4d97.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1051 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1063 internal compiler error: TINT_UNREACHABLE unhandled: inputAttachmentLoad
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.fxc.hlsl
index 0f95134..74334b0 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_440300() {
+float16_t inverseSqrt_440300() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = rsqrt(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_440300();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_440300();
+  prevent_dce.Store<float16_t>(0u, inverseSqrt_440300());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_440300();
+  prevent_dce.Store<float16_t>(0u, inverseSqrt_440300());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_440300();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E8879AF130(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl
index d5b01c5..82e4862 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019A8C2B0480(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001A0393F6220(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl
index 2d532f0..395160d 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_5f51f8() {
+vector<float16_t, 2> inverseSqrt_5f51f8() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = rsqrt(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_5f51f8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_5f51f8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, inverseSqrt_5f51f8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_5f51f8();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, inverseSqrt_5f51f8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_5f51f8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F4BFF8D4A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl
index ba7dc21..a3568b2 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000150E26754C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F2C0F6C310(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl
index f309d38..7238cb3 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_b85ebd() {
+vector<float16_t, 3> inverseSqrt_b85ebd() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = rsqrt(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_b85ebd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_b85ebd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, inverseSqrt_b85ebd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_b85ebd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, inverseSqrt_b85ebd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_b85ebd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D19F718380(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl
index 84944f8..583f13e 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023BDD3CED10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DB9BB75230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl
index 4f153a3..d4826ac 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void inverseSqrt_cbdc70() {
+vector<float16_t, 4> inverseSqrt_cbdc70() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = rsqrt(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  inverseSqrt_cbdc70();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  inverseSqrt_cbdc70();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, inverseSqrt_cbdc70());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  inverseSqrt_cbdc70();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, inverseSqrt_cbdc70());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = inverseSqrt_cbdc70();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022AE26E65F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl
index 50aba61..86f8e3d 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B9F43FF9C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ECDCC7F9A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.fxc.hlsl
index 67b41b8..351d3bf 100644
--- a/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_082c1f() {
+float16_t ldexp_082c1f() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = ldexp(arg_0, 1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_082c1f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_082c1f();
+  prevent_dce.Store<float16_t>(0u, ldexp_082c1f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_082c1f();
+  prevent_dce.Store<float16_t>(0u, ldexp_082c1f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_082c1f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CCD98CC0B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl
index ae9c720..08c83d1 100644
--- a/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F7EC695070(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000212DB25B3B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.fxc.hlsl
index 13162eb..f8da530 100644
--- a/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_217a31() {
+vector<float16_t, 2> ldexp_217a31() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = ldexp(arg_0, (1).xx);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_217a31();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_217a31();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_217a31());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_217a31();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_217a31());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_217a31();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015EE6268E50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.fxc.hlsl
index 0b2421b..41d3e7e 100644
--- a/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000227C9364690(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002601C95D520(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.fxc.hlsl
index 7dc2f2a..aed97f0 100644
--- a/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_3d90b4() {
+vector<float16_t, 2> ldexp_3d90b4() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   int2 arg_1 = (1).xx;
   vector<float16_t, 2> res = ldexp(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_3d90b4();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_3d90b4();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_3d90b4());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_3d90b4();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, ldexp_3d90b4());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_3d90b4();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023833393CD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl
index a54225f..32bcf69 100644
--- a/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019FE2140A50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B183D7C010(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.fxc.hlsl
index b6e61c9..28515bc 100644
--- a/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_624e0c() {
+float16_t ldexp_624e0c() {
   float16_t arg_0 = float16_t(1.0h);
   int arg_1 = 1;
   float16_t res = ldexp(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_624e0c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_624e0c();
+  prevent_dce.Store<float16_t>(0u, ldexp_624e0c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_624e0c();
+  prevent_dce.Store<float16_t>(0u, ldexp_624e0c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_624e0c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000209199D6560(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl
index f10495d..29f3d8a 100644
--- a/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B574B81070(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022B502D3CB0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.fxc.hlsl
index 45fd297..3d38288 100644
--- a/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_7485ce() {
+vector<float16_t, 3> ldexp_7485ce() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   int3 arg_1 = (1).xxx;
   vector<float16_t, 3> res = ldexp(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_7485ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_7485ce();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_7485ce());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_7485ce();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_7485ce());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_7485ce();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002312EB38E50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl
index 7b9a3ad..9047781 100644
--- a/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C90741E840(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C01BB45D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.fxc.hlsl
index c97cb21..2ead0b6 100644
--- a/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_7fa13c() {
+vector<float16_t, 4> ldexp_7fa13c() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   int4 arg_1 = (1).xxxx;
   vector<float16_t, 4> res = ldexp(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_7fa13c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_7fa13c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_7fa13c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_7fa13c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_7fa13c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_7fa13c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E2AB056500(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl
index 3cc00ce..a7506a3 100644
--- a/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A73A6B5050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024D05142760(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.fxc.hlsl
index 8f8caa8..f4fbec8 100644
--- a/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_8a0c2f() {
+vector<float16_t, 4> ldexp_8a0c2f() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = ldexp(arg_0, (1).xxxx);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_8a0c2f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_8a0c2f();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_8a0c2f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_8a0c2f();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, ldexp_8a0c2f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_8a0c2f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002019DC2D290(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl
index c2a7c8c..d218bf9 100644
--- a/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002747A2554B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E564FA6630(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.fxc.hlsl
index 03c657d..f741a6f 100644
--- a/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void ldexp_8e43e9() {
+vector<float16_t, 3> ldexp_8e43e9() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = ldexp(arg_0, (1).xxx);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  ldexp_8e43e9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  ldexp_8e43e9();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_8e43e9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  ldexp_8e43e9();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, ldexp_8e43e9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = ldexp_8e43e9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000191B7131810(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl
index 073aa54..2db5c93 100644
--- a/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017D44A10CC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C59CA76630(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.fxc.hlsl
index 2bb7483..6f02c96 100644
--- a/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_3f0e13() {
+float16_t length_3f0e13() {
   vector<float16_t, 2> arg_0 = (float16_t(0.0h)).xx;
   float16_t res = length(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_3f0e13();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_3f0e13();
+  prevent_dce.Store<float16_t>(0u, length_3f0e13());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_3f0e13();
+  prevent_dce.Store<float16_t>(0u, length_3f0e13());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_3f0e13();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024EA3F5FC90(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.fxc.hlsl
index b42606b..c2d9334 100644
--- a/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A630E3E9F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000020D774D8FA0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.fxc.hlsl
index cd6ab60..c7eb4df 100644
--- a/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_5b1a9b() {
+float16_t length_5b1a9b() {
   vector<float16_t, 4> arg_0 = (float16_t(0.0h)).xxxx;
   float16_t res = length(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_5b1a9b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_5b1a9b();
+  prevent_dce.Store<float16_t>(0u, length_5b1a9b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_5b1a9b();
+  prevent_dce.Store<float16_t>(0u, length_5b1a9b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_5b1a9b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F6483560C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.fxc.hlsl
index e60a483..b5a6636 100644
--- a/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000148A57305B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001892C77BAF0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.fxc.hlsl
index fb04093..d9c897e 100644
--- a/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_ba16d6() {
+float16_t length_ba16d6() {
   vector<float16_t, 3> arg_0 = (float16_t(0.0h)).xxx;
   float16_t res = length(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_ba16d6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_ba16d6();
+  prevent_dce.Store<float16_t>(0u, length_ba16d6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_ba16d6();
+  prevent_dce.Store<float16_t>(0u, length_ba16d6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_ba16d6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002ECF9A45DF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.fxc.hlsl
index 9cef8c2..22d532f 100644
--- a/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C6BF50FB20(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000027E8C2254B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/length/c158da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.fxc.hlsl
index 290d96e..df00ec4 100644
--- a/test/tint/builtins/gen/var/length/c158da.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void length_c158da() {
+float16_t length_c158da() {
   float16_t arg_0 = float16_t(0.0h);
   float16_t res = length(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  length_c158da();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  length_c158da();
+  prevent_dce.Store<float16_t>(0u, length_c158da());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  length_c158da();
+  prevent_dce.Store<float16_t>(0u, length_c158da());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = length_c158da();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F861956150(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.fxc.hlsl
index 650dcb0..95ed68c 100644
--- a/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020F4ACFDBB0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B110EC6A60(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.fxc.hlsl
index eb147f2..cd28ab6 100644
--- a/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_6ff86f() {
+vector<float16_t, 3> log_6ff86f() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = log(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_6ff86f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_6ff86f();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log_6ff86f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_6ff86f();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log_6ff86f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_6ff86f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AE5841B650(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.fxc.hlsl
index 40f6f88..dd95f39 100644
--- a/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000204BA1EF3C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015913ADC340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.fxc.hlsl
index e5900ba..68c3b7e 100644
--- a/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_8f0e32() {
+vector<float16_t, 2> log_8f0e32() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = log(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_8f0e32();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_8f0e32();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log_8f0e32());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_8f0e32();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log_8f0e32());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_8f0e32();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000140F932ADA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.fxc.hlsl
index 1f90abc..4f6d120 100644
--- a/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CC9059F180(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026400BE87F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.fxc.hlsl
index 1d5447c..48184d0 100644
--- a/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_c9f489() {
+float16_t log_c9f489() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = log(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_c9f489();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_c9f489();
+  prevent_dce.Store<float16_t>(0u, log_c9f489());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_c9f489();
+  prevent_dce.Store<float16_t>(0u, log_c9f489());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_c9f489();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E2F0A1D4A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.fxc.hlsl
index 655bac7..ca41f13 100644
--- a/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000284A2E030F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002BB17834FD0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.fxc.hlsl
index 34ea086..57be71b 100644
--- a/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log_cdbdc1() {
+vector<float16_t, 4> log_cdbdc1() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = log(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log_cdbdc1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log_cdbdc1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log_cdbdc1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log_cdbdc1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log_cdbdc1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log_cdbdc1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CD7A684A90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.fxc.hlsl
index af4b05b..c6fb7de 100644
--- a/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020CB150F9D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002269E7E4580(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.fxc.hlsl
index 859353b..06bffd2 100644
--- a/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_38b478() {
+vector<float16_t, 3> log2_38b478() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = log2(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_38b478();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_38b478();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log2_38b478());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_38b478();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, log2_38b478());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_38b478();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020E1F8D5B80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.fxc.hlsl
index 22c87e3..1cbdc23 100644
--- a/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002EEA0D7ED00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000195F593C320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log2/776088.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.fxc.hlsl
index 684c13b..f59fcf8 100644
--- a/test/tint/builtins/gen/var/log2/776088.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_776088() {
+vector<float16_t, 4> log2_776088() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = log2(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_776088();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_776088();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log2_776088());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_776088();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, log2_776088());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_776088();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002747C0A44D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.fxc.hlsl
index f6f3239..5f216d7 100644
--- a/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A07015FD50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014DF2D18FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.fxc.hlsl
index d637943..0d49696 100644
--- a/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_8c10b3() {
+float16_t log2_8c10b3() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = log2(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_8c10b3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_8c10b3();
+  prevent_dce.Store<float16_t>(0u, log2_8c10b3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_8c10b3();
+  prevent_dce.Store<float16_t>(0u, log2_8c10b3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_8c10b3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021119E06120(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.fxc.hlsl
index d194af8..c616026 100644
--- a/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002213D82E820(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002470887B6F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.fxc.hlsl
index 6809742..7a470b1 100644
--- a/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void log2_fb9f0b() {
+vector<float16_t, 2> log2_fb9f0b() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = log2(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  log2_fb9f0b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  log2_fb9f0b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log2_fb9f0b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  log2_fb9f0b();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, log2_fb9f0b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = log2_fb9f0b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029031E9E9F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl
index 9931868..a1f9a19 100644
--- a/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F7F42F54C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026C21298F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.fxc.hlsl
index 560bcd5..e7cea79 100644
--- a/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_111ac0() {
+float16_t max_111ac0() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t res = max(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_111ac0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_111ac0();
+  prevent_dce.Store<float16_t>(0u, max_111ac0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_111ac0();
+  prevent_dce.Store<float16_t>(0u, max_111ac0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_111ac0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000157B2B44FC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.fxc.hlsl
index 9341b03..3f99739 100644
--- a/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C93C075470(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000027B880761F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/max/34956e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.fxc.hlsl
index 6b2d850..a097cda 100644
--- a/test/tint/builtins/gen/var/max/34956e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_34956e() {
+vector<float16_t, 2> max_34956e() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = max(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_34956e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_34956e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, max_34956e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_34956e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, max_34956e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_34956e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206A79A6530(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.fxc.hlsl
index af64721..5a4c8b7 100644
--- a/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020BE9D651C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020FF4C57E00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/max/445169.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/max/445169.wgsl.expected.fxc.hlsl
index fda1a4d..6eef8ea 100644
--- a/test/tint/builtins/gen/var/max/445169.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/445169.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_445169() {
+vector<float16_t, 3> max_445169() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = max(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_445169();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_445169();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, max_445169());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_445169();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, max_445169());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_445169();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001091B01D3D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.fxc.hlsl
index 48885ec..4f13e9a 100644
--- a/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D66C11FF30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000141B125B800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.fxc.hlsl
index 0a90709..f694626 100644
--- a/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void max_e14f2b() {
+vector<float16_t, 4> max_e14f2b() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = max(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  max_e14f2b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  max_e14f2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, max_e14f2b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  max_e14f2b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, max_e14f2b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = max_e14f2b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001447D3EECF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.fxc.hlsl
index 3e02d44..9d2d8cc 100644
--- a/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AF330B5050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015183E29FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.fxc.hlsl
index cb3b27b..2e1ce81 100644
--- a/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_7c710a() {
+vector<float16_t, 4> min_7c710a() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = min(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_7c710a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_7c710a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, min_7c710a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_7c710a();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, min_7c710a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_7c710a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029BE3B8B840(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.fxc.hlsl
index b5873e2..802fee6 100644
--- a/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DAA7B12B40(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EF703E5390(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.fxc.hlsl
index 7cf0e2d..5905f0f 100644
--- a/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_ab0acd() {
+vector<float16_t, 3> min_ab0acd() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = min(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_ab0acd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_ab0acd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, min_ab0acd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_ab0acd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, min_ab0acd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_ab0acd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F8D6065BB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.fxc.hlsl
index aeaaba0..2c92152 100644
--- a/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D386A5FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002C7446A8F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.fxc.hlsl
index 11ea9d7..8bb8c0e 100644
--- a/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_ac84d6() {
+float16_t min_ac84d6() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t res = min(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_ac84d6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_ac84d6();
+  prevent_dce.Store<float16_t>(0u, min_ac84d6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_ac84d6();
+  prevent_dce.Store<float16_t>(0u, min_ac84d6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_ac84d6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D949605B70(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.fxc.hlsl
index 6f4ecbb..dcd54ac 100644
--- a/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024C982EFB60(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000019F58FC61F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.fxc.hlsl
index 8921e06..8065fd8 100644
--- a/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void min_e780f9() {
+vector<float16_t, 2> min_e780f9() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = min(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  min_e780f9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  min_e780f9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, min_e780f9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  min_e780f9();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, min_e780f9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = min_e780f9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002986F54E8B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.fxc.hlsl
index 8474ca7..264137d 100644
--- a/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001988D9A0020(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024248CEBEB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.fxc.hlsl
index 679886b..793e89d 100644
--- a/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_38cbbb() {
+float16_t mix_38cbbb() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t arg_2 = float16_t(1.0h);
   float16_t res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_38cbbb();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_38cbbb();
+  prevent_dce.Store<float16_t>(0u, mix_38cbbb());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_38cbbb();
+  prevent_dce.Store<float16_t>(0u, mix_38cbbb());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_38cbbb();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024D87348E50(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.fxc.hlsl
index 9898ebfb..ae47cdc 100644
--- a/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021004CC3600(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000024178663BF0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.fxc.hlsl
index 24fb315..ce0dd89 100644
--- a/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_63f2fd() {
+vector<float16_t, 3> mix_63f2fd() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_2 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_63f2fd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_63f2fd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_63f2fd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_63f2fd();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_63f2fd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_63f2fd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000118A43AEA40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.fxc.hlsl
index 70c3550..3a1691e 100644
--- a/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A0ECC2E860(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AC8767BBC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.fxc.hlsl
index a91127a..c75693f 100644
--- a/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_98ee3e() {
+vector<float16_t, 2> mix_98ee3e() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_2 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_98ee3e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_98ee3e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_98ee3e());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_98ee3e();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_98ee3e());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_98ee3e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A54F96B010(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.fxc.hlsl
index a8225f9..497ae22 100644
--- a/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F7E2F7F5D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022F10058A50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.fxc.hlsl
index bc4db2f..b8892b2 100644
--- a/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_c1aec6() {
+vector<float16_t, 3> mix_c1aec6() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   float16_t arg_2 = float16_t(1.0h);
   vector<float16_t, 3> res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_c1aec6();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_c1aec6();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_c1aec6());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_c1aec6();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, mix_c1aec6());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_c1aec6();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000202D85565E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.fxc.hlsl
index 8c50980..e26ac26 100644
--- a/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002825431FE70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DE1D225440(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.fxc.hlsl
index 58655ab..5a184a9 100644
--- a/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_e46a83() {
+vector<float16_t, 2> mix_e46a83() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   float16_t arg_2 = float16_t(1.0h);
   vector<float16_t, 2> res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_e46a83();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_e46a83();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_e46a83());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_e46a83();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, mix_e46a83());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_e46a83();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000200B51857A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.fxc.hlsl
index d2ef3bd..8e733a6 100644
--- a/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ACDE0EEC20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ADE56F3110(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.fxc.hlsl
index 57b1876..1d50210 100644
--- a/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_ee2468() {
+vector<float16_t, 4> mix_ee2468() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_2 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_ee2468();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_ee2468();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_ee2468());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_ee2468();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_ee2468());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_ee2468();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AB826DEA40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.fxc.hlsl
index 111585b..3c7ad6d 100644
--- a/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028A8FE1E7B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000256819A6970(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.fxc.hlsl
index a00412f..99e0cb2 100644
--- a/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void mix_f1a543() {
+vector<float16_t, 4> mix_f1a543() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   float16_t arg_2 = float16_t(1.0h);
   vector<float16_t, 4> res = lerp(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  mix_f1a543();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  mix_f1a543();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_f1a543());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  mix_f1a543();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, mix_f1a543());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = mix_f1a543();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027E1017F4C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.fxc.hlsl
index 0328d26..f84bc70 100644
--- a/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029DC801EC20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A0AF10BB90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.fxc.hlsl
index 7a2214a..222e8bd 100644
--- a/test/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/2d50da.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000220C039F6A0(17,30-40): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x00000220C039F6A0(17,30-40): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x00000220C039F6A0(17,30-40): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x000001DB83A53820(17,30-40): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001DB83A53820(17,30-40): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001DB83A53820(17,30-40): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.fxc.hlsl
index f15ea89..f88dee6 100644
--- a/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.fxc.hlsl
@@ -15,22 +15,6 @@
   modf_result_vec3_f16 res = tint_modf(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_45005f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_45005f();
   return;
@@ -41,3 +25,27 @@
   modf_45005f();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_45005f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F4F2BB8E50(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.fxc.hlsl
index e115488..d854fc3 100644
--- a/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/45005f.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000185EC285070(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000230FF89BC10(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.fxc.hlsl
index ef195fc..370de14 100644
--- a/test/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/4bfced.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E0AD82F420(17,30-40): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x000001E0AD82F420(17,30-40): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x000001E0AD82F420(17,30-40): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x000002043C1463F0(17,30-40): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000002043C1463F0(17,30-40): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000002043C1463F0(17,30-40): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.fxc.hlsl
index 35c783e..0ce4d1a 100644
--- a/test/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/5ea256.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C3BD7E2BD0(17,30-40): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x000001C3BD7E2BD0(17,30-40): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x000001C3BD7E2BD0(17,30-40): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x00000246B1573820(17,30-40): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x00000246B1573820(17,30-40): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x00000246B1573820(17,30-40): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.fxc.hlsl
index 8fe20b5..55f0b79 100644
--- a/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.fxc.hlsl
@@ -15,22 +15,6 @@
   modf_result_f16 res = tint_modf(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_8dbbbf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_8dbbbf();
   return;
@@ -41,3 +25,27 @@
   modf_8dbbbf();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_8dbbbf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206D068AE30(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl
index 9efe440..52ad5d4 100644
--- a/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/8dbbbf.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019DFE1C04C0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021B57B964C0(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/modf/995934.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/modf/995934.wgsl.expected.fxc.hlsl
index e39a700..70e7fac 100644
--- a/test/tint/builtins/gen/var/modf/995934.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/995934.wgsl.expected.fxc.hlsl
@@ -15,22 +15,6 @@
   modf_result_vec4_f16 res = tint_modf(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_995934();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_995934();
   return;
@@ -41,3 +25,27 @@
   modf_995934();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_995934();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022FE21BB630(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.fxc.hlsl
index a4bb7e7..449995e 100644
--- a/test/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/995934.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002EC45B10DB0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000129D24938B0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.fxc.hlsl
index abafca1..88685e0 100644
--- a/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.fxc.hlsl
@@ -15,22 +15,6 @@
   modf_result_vec2_f16 res = tint_modf(arg_0);
 }
 
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  modf_a545b9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
-}
-
 void fragment_main() {
   modf_a545b9();
   return;
@@ -41,3 +25,27 @@
   modf_a545b9();
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+};
+struct tint_symbol_1 {
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  modf_a545b9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025D926CE020(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.fxc.hlsl
index b617278..ec09774 100644
--- a/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/a545b9.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BE6E35E6E0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002278B3EB700(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.fxc.hlsl
index f2a9db5..366e9c7 100644
--- a/test/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/modf/bbf7f7.wgsl.expected.ir.fxc.hlsl
@@ -43,7 +43,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000178E626F6E0(17,25-35): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x00000178E626F6E0(17,25-35): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x00000178E626F6E0(17,25-35): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x00000210C8867E30(17,25-35): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x00000210C8867E30(17,25-35): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x00000210C8867E30(17,25-35): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.fxc.hlsl
index b1ef930..f9824ed 100644
--- a/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void normalize_39d5ec() {
+vector<float16_t, 3> normalize_39d5ec() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = normalize(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  normalize_39d5ec();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  normalize_39d5ec();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, normalize_39d5ec());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  normalize_39d5ec();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, normalize_39d5ec());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = normalize_39d5ec();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020760AB5CD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl
index 81e6387..6687e66 100644
--- a/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C63B026500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F76FC34E10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.fxc.hlsl
index 4e770e1..2c7a625 100644
--- a/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void normalize_7990f3() {
+vector<float16_t, 2> normalize_7990f3() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = normalize(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  normalize_7990f3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  normalize_7990f3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, normalize_7990f3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  normalize_7990f3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, normalize_7990f3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = normalize_7990f3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C45B146E10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.fxc.hlsl
index a688ea4..dfedc74 100644
--- a/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002452363E800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000230B865BB50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.fxc.hlsl
index c8b9713..e5561a4 100644
--- a/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void normalize_b8cb8d() {
+vector<float16_t, 4> normalize_b8cb8d() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = normalize(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  normalize_b8cb8d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  normalize_b8cb8d();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, normalize_b8cb8d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  normalize_b8cb8d();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, normalize_b8cb8d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = normalize_b8cb8d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E8FA0F5CA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl
index e825086..b8112b5 100644
--- a/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024114837250(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F0686C3D20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.fxc.hlsl
index 93b34a6..e7f3ed4 100644
--- a/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_4f33b2() {
+vector<float16_t, 4> pow_4f33b2() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = pow(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_4f33b2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_4f33b2();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, pow_4f33b2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_4f33b2();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, pow_4f33b2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_4f33b2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D42AFFA320(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.fxc.hlsl
index 5a297e7..c66b58a 100644
--- a/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029DD23CEE70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017000FF83E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.fxc.hlsl
index d5b83bc..d13f20e 100644
--- a/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_ce9ef5() {
+float16_t pow_ce9ef5() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t res = pow(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_ce9ef5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_ce9ef5();
+  prevent_dce.Store<float16_t>(0u, pow_ce9ef5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_ce9ef5();
+  prevent_dce.Store<float16_t>(0u, pow_ce9ef5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_ce9ef5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012DE1B55DF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl
index a2fff8b..cde8aab 100644
--- a/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025B97F25960(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000252EFA450B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.fxc.hlsl
index 934e25a..607a4a4 100644
--- a/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_f37b25() {
+vector<float16_t, 2> pow_f37b25() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = pow(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_f37b25();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_f37b25();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, pow_f37b25());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_f37b25();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, pow_f37b25());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_f37b25();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E1D0326390(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.fxc.hlsl
index a684d64..a1b3d1c 100644
--- a/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B077C7F020(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023B6051B440(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.fxc.hlsl
index dc8d60f..9aff70c 100644
--- a/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void pow_fa5429() {
+vector<float16_t, 3> pow_fa5429() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = pow(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  pow_fa5429();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  pow_fa5429();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, pow_fa5429());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  pow_fa5429();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, pow_fa5429());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = pow_fa5429();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019126E01470(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.fxc.hlsl
index c00c097..0030983 100644
--- a/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000215E59A5050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EFBBD38FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl
index f0b73ba..f130a58 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_0464d1());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D14AC34A80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl
index 5d0ea92..000b319 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0464d1.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_0464d1());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021E98773EE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl
index 9461dc0..dcc2177 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_0639ea()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000280E90946A0(5,13-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl
index c6b7e37..70f2a36 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0639ea.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_0639ea()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000220E4C3FEF0(5,13-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl
index 6eee02d..31fff1c 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0cc513()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B6BC984DF0(5,16-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl
index ff11d382..8eabdc5 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0cc513.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0cc513()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021DE634C320(5,16-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl
index 2a1f161..d00efba 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0e0e6e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E5F3049BC0(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl
index 5b927d5..b25dff4 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/0e0e6e.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_0e0e6e()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FB7ADBC320(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl
index dec0ba0..bc4da15 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_2d0b7d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000200F3FD9C50(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl
index 68b0e10..45cff3c 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/2d0b7d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, quadBroadcast_2d0b7d());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000242B356D580(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.fxc.hlsl
index 5fe61e8..4b6d9ba 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_355db5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019FB0CEC240(5,16-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl
index 51b8fc3..6c8faa9 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/355db5.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_355db5()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206CFB58E20(5,16-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl
index 5b976e8..66934d4 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_3c3824());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000268652AFA80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl
index ebce2a0..bae9923 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/3c3824.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadBroadcast_3c3824());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D722CF0140(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl
index cb200bd..b9951ba 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_4d9898());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026BA6FEFC60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl
index 2bec8fb..ae73a76 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/4d9898.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_4d9898());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A394F33AB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.fxc.hlsl
index 06eea0b..758eb9e 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_641316()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022483E1ADC0(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl
index 7829328..9161ee6 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/641316.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, quadBroadcast_641316());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A903734AD0(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.fxc.hlsl
index 3e780d1..68bd8fc 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_704803()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BDC825ADC0(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl
index c06795a..bc0b2cc 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/704803.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_704803()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019E04AD1BA0(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.fxc.hlsl
index 829af0c..2cdb98a 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_76f499()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000245DB5C46E0(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl
index 3a283d7..3f5c9d5 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/76f499.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_76f499()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000215F021C260(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.fxc.hlsl
index e116661..b00c18b 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_78129b());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CE4C3846C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl
index de543ed8..449d9d3 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/78129b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_78129b());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FE7083BBD0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.fxc.hlsl
index b2c217a..12e93c2 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_796753());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D5707B0DD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl
index 7a08768..712ec1d 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/796753.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_796753());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021DCCDD5170(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.fxc.hlsl
index ac18ae8..eaa7fd2 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_820991()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001589DEAD590(5,16-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl
index c2b1408..09c9931 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/820991.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_820991()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002085DF7D580(5,16-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl
index bfe7dd9..71265c6 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_960c6b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000219E6F88550(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl
index 7f72a49..09cd22f 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/960c6b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_960c6b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AA97E26120(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl
index 07fe7d8..6314af1 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_9d802c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000279B4E402E0(5,16-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl
index 81fe53b..d0745dc 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/9d802c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_9d802c()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002970A21FDB0(5,16-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl
index 4f287ec..f3c9086 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_a2d2b4()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CFFB14C2F0(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl
index b5d6440..690dd13 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/a2d2b4.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, quadBroadcast_a2d2b4());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017034960480(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl
index 42b1fb7..5faef70 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_ae401e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026AB91BADC0(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl
index 39d49ea..6f729d6 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/ae401e.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, quadBroadcast_ae401e());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002050DA051E0(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.fxc.hlsl
index 42612bd..35e3a8d 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_b68331()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000260DD639BC0(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl
index 119d752..0f903da 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/b68331.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, quadBroadcast_b68331());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020F41234AD0(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl
index f94708f..54730b3 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_bed00b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D323334A50(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl
index 8bc33a6..c36c3ca 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/bed00b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadBroadcast_bed00b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019ECD3FD580(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl
index f950700..8da1d7f 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_c0e704()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000151AD629BC0(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl
index 535ca8e..fda424e 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/c0e704.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_c0e704()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028CA8541540(5,14-37): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl
index 41b111e..576904c 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cd3624()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023495EBBFC0(5,16-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl
index f15a165..011affe 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/cd3624.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cd3624()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018ABC148DC0(5,16-40): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl
index ee9acb4..b41a95d 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_cebc6a());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000200F14746C0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl
index 4e2ced9..548ffab 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/cebc6a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadBroadcast_cebc6a());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024040E363A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl
index de14bf7..373bd16 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cfbf48()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002228C635650(5,16-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl
index 877f9ee..0fa68bf 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/cfbf48.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_cfbf48()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015F57195610(5,16-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl
index d425ce6..aa913aa 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_e6d39d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027E17C69B90(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl
index 42541c6..8a47d1c 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/e6d39d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_e6d39d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019F0DEF6A10(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl
index 41b92d9..9c27055 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_e6d948()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022B6CD7B850(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl
index af5f53f..94329da 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/e6d948.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, quadBroadcast_e6d948());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C04BDCAE90(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl
index 4a12ca2..5a11229 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_e7c301());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002274A40FC40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl
index 49dea4ce..00a02ed 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/e7c301.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadBroadcast_e7c301());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000144D3BC0E70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl
index cdf2c7a..a54b869 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_ef7d5d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019203FFFC40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl
index ab93ab5..f2b4fef 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/ef7d5d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadBroadcast_ef7d5d());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AAEA7469F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl
index 8392e64..8be85be 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadBroadcast_f1e8ec()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BE5AC8F7F0(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl
index 6d8c1a4..aa32a81 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f1e8ec.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, quadBroadcast_f1e8ec());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000276DDFCC320(5,15-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl
index d2cec03..cb0b308 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_f5f923()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021C20E5C320(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl
index 8c1abc4..3a060c8 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f5f923.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_f5f923()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018D8AE2FDB0(5,14-38): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.fxc.hlsl
index fe2bef5..a5b8dac 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadBroadcast_f60448()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000188F0425650(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl
index 80672ca..00ba6cc 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f60448.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, quadBroadcast_f60448());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C5FB82FDB0(5,15-39): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl
index 0bfb016..9cf7f5b 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_f9d579()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002594DDA9B90(5,13-36): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl
index 26e5a26..5aac627 100644
--- a/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadBroadcast/f9d579.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadBroadcast_f9d579()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C54C9FD520(5,13-36): error X3004: undeclared identifier 'QuadReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl
index a6386f2..36a246b 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapDiagonal_15ac75());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C7DA8A9D80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl
index a093c52..534136b 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/15ac75.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapDiagonal_15ac75());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021B5558C1F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl
index cd268d8..f89f5e7 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapDiagonal_2be5e7());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020BA7CDF980(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl
index a9d857c..554baa7 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/2be5e7.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapDiagonal_2be5e7());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000244B71BBAF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl
index a8239d9..0b76050 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_331804()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025887E9BDB0(5,16-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl
index 969c1ab..8ceffea 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/331804.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_331804()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012A1B5CDD70(5,16-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl
index 302cbe4..358ae9e 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_348173()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C712FE46C0(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl
index 00bd53e29..8238407 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/348173.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, quadSwapDiagonal_348173());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020D3AD0FDC0(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl
index 0790494..1d85e9b 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_486196()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C3AAA5B7A0(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl
index 9d6715c..ccea143 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/486196.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_486196()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021B0F4DFB50(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl
index 9cb25cf..888fab3 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_730e40()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C675276170(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl
index 75e07e8..5169647 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/730e40.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, quadSwapDiagonal_730e40());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BE8FDFAE90(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl
index 59e69fc..f560336 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_8077c8()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020A9F71CFD0(5,16-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl
index 7d520d1..c1c42dc 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/8077c8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_8077c8()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000175A3764D20(5,16-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl
index 58f10dc..75f020c 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_856536()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B4F8CD49E0(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl
index 25866a0..91e4c54 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/856536.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, quadSwapDiagonal_856536());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000249CB89FDC0(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl
index 22a98a3..222b47a 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_9ccb38()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001420DF36BB0(5,13-41): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl
index a2d06f6..5969934 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/9ccb38.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapDiagonal_9ccb38()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000273B929FDB0(5,13-41): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl
index 9a81ea5..71f35b5 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_a090b0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E1726146D0(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl
index f8861fa..f90c32e 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/a090b0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapDiagonal_a090b0()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017C06955CD0(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl
index 06b6416..d74fe4c 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_a665b1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000259A2B9D0D0(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl
index f6fd704..e62b730 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/a665b1.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_a665b1()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B41C1A6080(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl
index f1a34c5..2ecc8db 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_a82e1d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020466DAD0B0(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl
index ab49048..2f77eea 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/a82e1d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_a82e1d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002249A31FDD0(5,14-42): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl
index 3704502..6eaa6be 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapDiagonal_af19a5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002101B20FAE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl
index 12ecb02..7a17ca6 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/af19a5.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapDiagonal_af19a5());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F32A9E48B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl
index 830b1d1..77d59da 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_b905fc()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002DC9C966020(5,16-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl
index 83c8cfd..2d5a35b 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/b905fc.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapDiagonal_b905fc()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013E14FF6E60(5,16-44): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl
index 6ee12ab..1dbfdc2 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapDiagonal_c31636()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000195460B4AF0(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl
index 0f3a528..b08a007 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/c31636.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, quadSwapDiagonal_c31636());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002557640AE90(5,15-43): error X3004: undeclared identifier 'QuadReadAcrossDiagonal'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl
index 6d7e1ef..deb7812 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapDiagonal_e4bec8());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019022295900(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl
index 9f098f1..55a0e89 100644
--- a/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapDiagonal/e4bec8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapDiagonal_e4bec8());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022D18CB38D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.fxc.hlsl
index 84b9e62..26974d6 100644
--- a/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapX_02834c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023D1A1846C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl
index 0f3fd1d..15135b9 100644
--- a/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/02834c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapX_02834c());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B4A7AE46B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.fxc.hlsl
index 631b5bf..f338410 100644
--- a/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_053f3b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D7F3276010(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl
index e2460f2..afaeec5 100644
--- a/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/053f3b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_053f3b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A6498B4690(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl
index 171828b..0d740a2 100644
--- a/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_07f1fc()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018855826F60(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl
index fbcb010..b984c49 100644
--- a/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/07f1fc.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, quadSwapX_07f1fc());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B43EEEFD60(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.fxc.hlsl
index 71535d2..d3077e7 100644
--- a/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_150d6f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002055E7001D0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl
index ab4edf2..da37aeb 100644
--- a/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/150d6f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_150d6f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C980CF1E10(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl
index 5d49500..cdffc6b 100644
--- a/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_19f8ce()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025497C2EC70(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl
index 7c9f44e..2a3394d 100644
--- a/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/19f8ce.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, quadSwapX_19f8ce());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017E9CB34680(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.fxc.hlsl
index 0661620..1eadca6 100644
--- a/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_1e1086()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025C71A79B20(5,13-34): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl
index ccda9d2..a58d042 100644
--- a/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/1e1086.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_1e1086()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C0529B3FF0(5,13-34): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.fxc.hlsl
index 1674a1e..2f74386 100644
--- a/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_69af6a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CDB1A702E0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl
index 1a2271a..406c9da 100644
--- a/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/69af6a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_69af6a()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F30FF24680(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.fxc.hlsl
index f200126..921df7a 100644
--- a/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_8203ad()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A75E5168A0(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl
index 1d01356..0cca498 100644
--- a/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/8203ad.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, quadSwapX_8203ad());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000161E9D898A0(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.fxc.hlsl
index 622f4d7..e142f09 100644
--- a/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_879738()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000298194B5470(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl
index 8d1e799..ae8b965 100644
--- a/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/879738.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_879738()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B23770BBC0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.fxc.hlsl
index 0286319..7970f09 100644
--- a/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_9bea80()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000217442C4A80(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl
index 4d1a9fa..50323e7 100644
--- a/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/9bea80.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapX_9bea80()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C9D4B60660(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.fxc.hlsl
index aaef08b..0dacdbb 100644
--- a/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapX_a4e103());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C7797A4A50(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl
index 15cb00b..d980f39 100644
--- a/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/a4e103.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapX_a4e103());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027941B6FF30(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl
index c54bf8c..6ddcc3f 100644
--- a/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_b1a5fe()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E6E25A9B50(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl
index 58c08c1..3f034e0 100644
--- a/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/b1a5fe.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapX_b1a5fe()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000272C6A546A0(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.fxc.hlsl
index 9454f54..05b4497 100644
--- a/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapX_bc2013());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028D6C1A0570(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl
index 0ce9e57..5959546 100644
--- a/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/bc2013.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapX_bc2013());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A0E689FBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl
index 134d775..24a5a05 100644
--- a/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapX_bddb9f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019CB65746B0(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl
index 124b900..782c5a1 100644
--- a/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/bddb9f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, quadSwapX_bddb9f());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CD216346D0(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.fxc.hlsl
index 3526320..d726765 100644
--- a/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapX_d60cec());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000237B2630570(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl
index 8ed8370..50835d7 100644
--- a/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/d60cec.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapX_d60cec());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EB307CFFB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl
index d021e13..7b21714 100644
--- a/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_edfa1f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002629BF801D0(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl
index e157b31..bd6e7fc 100644
--- a/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapX/edfa1f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapX_edfa1f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000176BBDCFD50(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossX'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.fxc.hlsl
index b629697..8fec19f 100644
--- a/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_06a67c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9D627BDC0(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl
index 65d370a..3d032e4 100644
--- a/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/06a67c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, quadSwapY_06a67c());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000244D66046D0(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.fxc.hlsl
index 1cccaaa..84cab90 100644
--- a/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_0c4938()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000227F43AFAF0(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl
index d87d2dc..2253f93 100644
--- a/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/0c4938.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, quadSwapY_0c4938());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017CFE00FF20(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl
index 07aba1d..7895d42 100644
--- a/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_0d05a8()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F1AB3C9B70(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl
index 63a844e..2eee4a2 100644
--- a/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/0d05a8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_0d05a8()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026D34B14680(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl
index 7a6d6f4..df7f29c 100644
--- a/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_14bb9a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017C28695250(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl
index 730b966..807df60 100644
--- a/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/14bb9a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_14bb9a()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000124448BFD50(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl
index cb091ae..c31ebe9 100644
--- a/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_1f1a06()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019C87ADB9B0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl
index 29e3150..f18a7ac 100644
--- a/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/1f1a06.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_1f1a06()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002877451FD50(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.fxc.hlsl
index 528e304..bf431a1 100644
--- a/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapY_264908());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024D2D6346C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl
index 6fa8b32..eb2abb2 100644
--- a/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/264908.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, quadSwapY_264908());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E7631E4FD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl
index 25e5866..33c9721 100644
--- a/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapY_5b2e67());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B9A40B1700(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl
index aa690379..28ea477 100644
--- a/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/5b2e67.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, quadSwapY_5b2e67());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002417C93FBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl
index b145015..cb0be9b 100644
--- a/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_6f6bc9()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002476C8C0510(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl
index df1e46c..91d4b67 100644
--- a/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/6f6bc9.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_6f6bc9()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002103CD06C20(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.fxc.hlsl
index ae89049..7509b0d 100644
--- a/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapY_9277e9());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002373BD4EA00(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl
index ed4fc57..2a87a62 100644
--- a/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/9277e9.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<float16_t>(0u, quadSwapY_9277e9());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021526C9AB60(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl
index 4daf988..893341d 100644
--- a/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_94ab6d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002152D6201D0(5,13-34): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl
index 9302009..1c64e44 100644
--- a/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/94ab6d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(quadSwapY_94ab6d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000278DA2BCC20(5,13-34): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl
index 75fce9e..77eb32b 100644
--- a/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(quadSwapY_a27e1c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002113686CDC0(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl
index 16458ec..5b59122 100644
--- a/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/a27e1c.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store2(0u, quadSwapY_a27e1c());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000181C8B14680(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl
index d53079a..1d8cb79 100644
--- a/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapY_a50fcb());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A949FB6B10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl
index 800493f..9e53783 100644
--- a/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/a50fcb.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, quadSwapY_a50fcb());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002830A7AFFB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl
index 29d17ee..87b2439 100644
--- a/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_b9d9e7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BA3B0F9B00(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl
index c34dcbd..1cbc2e8 100644
--- a/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/b9d9e7.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_b9d9e7()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F387BD46D0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.fxc.hlsl
index cf92fa0..4565223 100644
--- a/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(quadSwapY_bb697b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C891C89B50(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl
index dfeef1b..1e4ad85 100644
--- a/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/bb697b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store4(0u, quadSwapY_bb697b());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024D99047F60(5,15-36): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.fxc.hlsl
index 383caa9..431e302 100644
--- a/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_be4e72()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000240A752BE30(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl
index 1422d57..cd4d493 100644
--- a/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/be4e72.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_be4e72()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001940568FD50(5,14-35): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl
index 466d5dd..d671837 100644
--- a/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_d1ab4d()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000248C9C6FEC0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl
index c16714e..7741e7e 100644
--- a/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/quadSwapY/d1ab4d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -17,3 +17,6 @@
   prevent_dce.Store3(0u, asuint(quadSwapY_d1ab4d()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017C89ED9AE0(5,16-37): error X3004: undeclared identifier 'QuadReadAcrossY'
+
diff --git a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.fxc.hlsl
index 8390b8f..f57a18d 100644
--- a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 0.01745329251994329547;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_208fd9() {
+float16_t radians_208fd9() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = tint_radians(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_208fd9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_208fd9();
+  prevent_dce.Store<float16_t>(0u, radians_208fd9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_208fd9();
+  prevent_dce.Store<float16_t>(0u, radians_208fd9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_208fd9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FFDF716120(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.fxc.hlsl
index d9e1beb..8c7490b 100644
--- a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002059E77E2D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001CA1A373CD0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.fxc.hlsl
index cc44989..08c08f2 100644
--- a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 0.01745329251994329547;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_44f20b() {
+vector<float16_t, 4> radians_44f20b() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = tint_radians(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_44f20b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_44f20b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, radians_44f20b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_44f20b();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, radians_44f20b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_44f20b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DFA74A6580(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.fxc.hlsl
index 1872e6e..31ceb89 100644
--- a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026DECBBF7F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002517F45B700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.fxc.hlsl
index 1303076..4170578 100644
--- a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 0.01745329251994329547;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_7ea4c7() {
+vector<float16_t, 3> radians_7ea4c7() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = tint_radians(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_7ea4c7();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_7ea4c7();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, radians_7ea4c7());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_7ea4c7();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, radians_7ea4c7());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_7ea4c7();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EA75D5B3C0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl
index a2d3ac7..3930ac8 100644
--- a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021C8B68E710(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000161880BDE60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.fxc.hlsl
index bcc79ab..c21187e 100644
--- a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.fxc.hlsl
@@ -4,37 +4,48 @@
   return param_0 * 0.01745329251994329547;
 }
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void radians_fbacf0() {
+vector<float16_t, 2> radians_fbacf0() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = tint_radians(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  radians_fbacf0();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  radians_fbacf0();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, radians_fbacf0());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  radians_fbacf0();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, radians_fbacf0());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = radians_fbacf0();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000169B1945740(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.fxc.hlsl
index af7c30f..cb1323b 100644
--- a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017BAA67F4F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017DF5263CC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.fxc.hlsl
index 03e87f0..d02a6d4 100644
--- a/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void reflect_310de5() {
+vector<float16_t, 4> reflect_310de5() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = reflect(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  reflect_310de5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  reflect_310de5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, reflect_310de5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  reflect_310de5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, reflect_310de5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = reflect_310de5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027026B9DA80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.fxc.hlsl
index 912663d..e8ae651 100644
--- a/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001684C4412E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002D4635ECF90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.fxc.hlsl
index fad0898..5ab35bb 100644
--- a/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void reflect_61ca21() {
+vector<float16_t, 3> reflect_61ca21() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = reflect(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  reflect_61ca21();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  reflect_61ca21();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, reflect_61ca21());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  reflect_61ca21();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, reflect_61ca21());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = reflect_61ca21();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018321595850(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.fxc.hlsl
index b1a351e..7dce34a 100644
--- a/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CC676CF700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002D768B2CF90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.fxc.hlsl
index f370764..a556484 100644
--- a/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void reflect_bb15ac() {
+vector<float16_t, 2> reflect_bb15ac() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = reflect(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  reflect_bb15ac();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  reflect_bb15ac();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, reflect_bb15ac());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  reflect_bb15ac();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, reflect_bb15ac());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = reflect_bb15ac();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026C5DDA9910(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl
index b1d69da..10a4c7f 100644
--- a/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015209C2FC50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F5B7C8B6E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.fxc.hlsl
index e7cee23..26b5b3b 100644
--- a/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void refract_0594ba() {
+vector<float16_t, 4> refract_0594ba() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   float16_t arg_2 = float16_t(1.0h);
   vector<float16_t, 4> res = refract(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  refract_0594ba();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  refract_0594ba();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, refract_0594ba());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  refract_0594ba();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, refract_0594ba());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = refract_0594ba();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029F12D66710(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.fxc.hlsl
index 12ea6da..09c592b 100644
--- a/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000292AFB735E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B6659FA490(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.fxc.hlsl
index 10f48b3..c80e3a6 100644
--- a/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void refract_570cb3() {
+vector<float16_t, 2> refract_570cb3() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   float16_t arg_2 = float16_t(1.0h);
   vector<float16_t, 2> res = refract(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  refract_570cb3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  refract_570cb3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, refract_570cb3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  refract_570cb3();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, refract_570cb3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = refract_570cb3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028DBC9DD280(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.fxc.hlsl
index 4181655..c7b6bd0 100644
--- a/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A2FAF95FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017EE610A490(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.fxc.hlsl
index 449f15b..c0d36f3 100644
--- a/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void refract_8984af() {
+vector<float16_t, 3> refract_8984af() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   float16_t arg_2 = float16_t(1.0h);
   vector<float16_t, 3> res = refract(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  refract_8984af();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  refract_8984af();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, refract_8984af());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  refract_8984af();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, refract_8984af());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = refract_8984af();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ED7E9455B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.fxc.hlsl
index b8a2be8..4eea050 100644
--- a/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE51295520(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029414B45790(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.fxc.hlsl
index 956c07f..8be76d5 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_9078ef() {
+float16_t round_9078ef() {
   float16_t arg_0 = float16_t(3.5h);
   float16_t res = round(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_9078ef();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_9078ef();
+  prevent_dce.Store<float16_t>(0u, round_9078ef());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_9078ef();
+  prevent_dce.Store<float16_t>(0u, round_9078ef());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_9078ef();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000279E0135DF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.fxc.hlsl
index 8dc03f3..6373abd 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002160D923180(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000178B3BAF090(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.fxc.hlsl
index 531e516..3eb738c 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_d87e84() {
+vector<float16_t, 2> round_d87e84() {
   vector<float16_t, 2> arg_0 = (float16_t(3.5h)).xx;
   vector<float16_t, 2> res = round(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_d87e84();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_d87e84();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, round_d87e84());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_d87e84();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, round_d87e84());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_d87e84();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027303FE6BB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.fxc.hlsl
index ff03a29..0cad29a 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FB2BFB3A60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024E44E96630(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.fxc.hlsl
index 84d41c4..25e4f61 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_e1bba2() {
+vector<float16_t, 3> round_e1bba2() {
   vector<float16_t, 3> arg_0 = (float16_t(3.5h)).xxx;
   vector<float16_t, 3> res = round(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_e1bba2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_e1bba2();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, round_e1bba2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_e1bba2();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, round_e1bba2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_e1bba2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014B9F7B5E50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.fxc.hlsl
index 39471b2..e0ef61c 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019558694C80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021C66516620(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.fxc.hlsl
index 982e87b..2ad0d1e 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void round_f665b5() {
+vector<float16_t, 4> round_f665b5() {
   vector<float16_t, 4> arg_0 = (float16_t(3.5h)).xxxx;
   vector<float16_t, 4> res = round(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  round_f665b5();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  round_f665b5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, round_f665b5());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  round_f665b5();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, round_f665b5());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = round_f665b5();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001282D846020(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.fxc.hlsl
index ee3a513..9323b3c 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021D705E0180(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F94FA3B600(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.fxc.hlsl
index dbd4655..13b1853 100644
--- a/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_462535() {
+vector<float16_t, 3> saturate_462535() {
   vector<float16_t, 3> arg_0 = (float16_t(2.0h)).xxx;
   vector<float16_t, 3> res = saturate(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_462535();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_462535();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, saturate_462535());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_462535();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, saturate_462535());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_462535();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000280F8115B30(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.fxc.hlsl
index 04d9cd2..1374828 100644
--- a/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018F23935040(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BFDD06C340(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.fxc.hlsl
index f3933ff..a82ff6b 100644
--- a/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_cd2028() {
+vector<float16_t, 2> saturate_cd2028() {
   vector<float16_t, 2> arg_0 = (float16_t(2.0h)).xx;
   vector<float16_t, 2> res = saturate(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_cd2028();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_cd2028();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, saturate_cd2028());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_cd2028();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, saturate_cd2028());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_cd2028();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025BB757E430(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.fxc.hlsl
index 104ee0e..38993e7 100644
--- a/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000137A8E12B20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F497472760(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.fxc.hlsl
index 58cc15d..5949a94 100644
--- a/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_dcde71() {
+vector<float16_t, 4> saturate_dcde71() {
   vector<float16_t, 4> arg_0 = (float16_t(2.0h)).xxxx;
   vector<float16_t, 4> res = saturate(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_dcde71();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_dcde71();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, saturate_dcde71());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_dcde71();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, saturate_dcde71());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_dcde71();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206D40846B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.fxc.hlsl
index ec80e59..48f8ded 100644
--- a/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002186DB3EA20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000013D1D5793D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.fxc.hlsl
index 4bf07e3..f09fe36 100644
--- a/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void saturate_e8df56() {
+float16_t saturate_e8df56() {
   float16_t arg_0 = float16_t(2.0h);
   float16_t res = saturate(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  saturate_e8df56();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  saturate_e8df56();
+  prevent_dce.Store<float16_t>(0u, saturate_e8df56());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  saturate_e8df56();
+  prevent_dce.Store<float16_t>(0u, saturate_e8df56());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = saturate_e8df56();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000219052DF070(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.fxc.hlsl
index f84eec3..28b2451 100644
--- a/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C27A13F3A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B84801AFE0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.fxc.hlsl
index 038705d..9436fce 100644
--- a/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_10e73b() {
+float16_t select_10e73b() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   bool arg_2 = true;
   float16_t res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_10e73b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_10e73b();
+  prevent_dce.Store<float16_t>(0u, select_10e73b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_10e73b();
+  prevent_dce.Store<float16_t>(0u, select_10e73b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_10e73b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000248474F5770(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.fxc.hlsl
index 4169fc3..fd8d293 100644
--- a/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/10e73b.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029057725580(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000216945949F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.fxc.hlsl
index 752beda..64ed7e6 100644
--- a/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_1ada2a() {
+vector<float16_t, 3> select_1ada2a() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   bool arg_2 = true;
   vector<float16_t, 3> res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_1ada2a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_1ada2a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_1ada2a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_1ada2a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_1ada2a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_1ada2a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027C7C879280(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.fxc.hlsl
index 32fcf12..0fe7ef8 100644
--- a/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/1ada2a.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021D9D825FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E6F5F8B700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/53d518.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.fxc.hlsl
index 4ee04fe..b8260b2 100644
--- a/test/tint/builtins/gen/var/select/53d518.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_53d518() {
+vector<float16_t, 3> select_53d518() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   bool3 arg_2 = (true).xxx;
   vector<float16_t, 3> res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_53d518();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_53d518();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_53d518());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_53d518();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, select_53d518());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_53d518();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000239D80BE090(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.fxc.hlsl
index 095b8f7..96dd3e8 100644
--- a/test/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001960B4E0360(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000212F873F4C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.fxc.hlsl
index 9354ecb..43b7e1d 100644
--- a/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_830dd9() {
+vector<float16_t, 4> select_830dd9() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   bool arg_2 = true;
   vector<float16_t, 4> res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_830dd9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_830dd9();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_830dd9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_830dd9();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_830dd9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_830dd9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001634B6E57B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.fxc.hlsl
index 1be7a86a..30b97bd 100644
--- a/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/830dd9.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B852E05FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002256836B700(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.fxc.hlsl
index 6b19e4f..d98cc6f 100644
--- a/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_86f9bd() {
+vector<float16_t, 2> select_86f9bd() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   bool arg_2 = true;
   vector<float16_t, 2> res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_86f9bd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_86f9bd();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_86f9bd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_86f9bd();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_86f9bd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_86f9bd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002737A97A8E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.fxc.hlsl
index 452265a..a6caef4 100644
--- a/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/86f9bd.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000249FD8E5040(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BDEF1E6A30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.fxc.hlsl
index 43eaa62..7ba05e0 100644
--- a/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_a081f1() {
+vector<float16_t, 4> select_a081f1() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   bool4 arg_2 = (true).xxxx;
   vector<float16_t, 4> res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_a081f1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_a081f1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_a081f1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_a081f1();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, select_a081f1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_a081f1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024F6EAB57C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.fxc.hlsl
index dfc5691..46240f1 100644
--- a/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002E6C85B3040(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A15357B6D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.fxc.hlsl
index 09e3ce0..ef29455 100644
--- a/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void select_ed7c13() {
+vector<float16_t, 2> select_ed7c13() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   bool2 arg_2 = (true).xx;
   vector<float16_t, 2> res = (arg_2 ? arg_1 : arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  select_ed7c13();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  select_ed7c13();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_ed7c13());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  select_ed7c13();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, select_ed7c13());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = select_ed7c13();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002699FCA9260(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.fxc.hlsl
index d8d9e60..7b3ae3d 100644
--- a/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000166EAC3F950(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000296A5A14640(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sign/160933.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.fxc.hlsl
index 8b6e1aa..36aa45b 100644
--- a/test/tint/builtins/gen/var/sign/160933.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_160933() {
+vector<float16_t, 4> sign_160933() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = vector<float16_t, 4>(sign(arg_0));
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_160933();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_160933();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sign_160933());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_160933();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sign_160933());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_160933();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022C254A4990(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.fxc.hlsl
index 48e2169..77acbf4 100644
--- a/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B002FC0030(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000259FFE95C30(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.fxc.hlsl
index 541058c..1f0e6b8 100644
--- a/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_5d283a() {
+vector<float16_t, 3> sign_5d283a() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = vector<float16_t, 3>(sign(arg_0));
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_5d283a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_5d283a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sign_5d283a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_5d283a();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sign_5d283a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_5d283a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002DFEB61D370(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.fxc.hlsl
index 459f587..dd25cb8 100644
--- a/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017AB20F5050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F2AE79D0A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.fxc.hlsl
index 8dbf1d5..8bff6eb 100644
--- a/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_7c85ea() {
+float16_t sign_7c85ea() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = float16_t(sign(arg_0));
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_7c85ea();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_7c85ea();
+  prevent_dce.Store<float16_t>(0u, sign_7c85ea());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_7c85ea();
+  prevent_dce.Store<float16_t>(0u, sign_7c85ea());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_7c85ea();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B0F716D480(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.fxc.hlsl
index 33be8c0..027c7c1 100644
--- a/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D92BA726E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002506A34B6F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.fxc.hlsl
index 33d9cbf..214c6ed 100644
--- a/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sign_ccdb3c() {
+vector<float16_t, 2> sign_ccdb3c() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = vector<float16_t, 2>(sign(arg_0));
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sign_ccdb3c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sign_ccdb3c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sign_ccdb3c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sign_ccdb3c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sign_ccdb3c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sign_ccdb3c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021293659F50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl
index 3f5baf0..7948374 100644
--- a/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CCCC6102E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EF0B79C320(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.fxc.hlsl
index 43c6cd3..d29050a 100644
--- a/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_2c903b() {
+vector<float16_t, 3> sin_2c903b() {
   vector<float16_t, 3> arg_0 = (float16_t(1.5703125h)).xxx;
   vector<float16_t, 3> res = sin(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_2c903b();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_2c903b();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sin_2c903b());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_2c903b();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sin_2c903b());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_2c903b();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021714CE5740(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.fxc.hlsl
index d3ace6db..2f95734 100644
--- a/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F3F1BA5480(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002244A765290(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.fxc.hlsl
index 9d7b049..6e9137f 100644
--- a/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_3cca11() {
+vector<float16_t, 2> sin_3cca11() {
   vector<float16_t, 2> arg_0 = (float16_t(1.5703125h)).xx;
   vector<float16_t, 2> res = sin(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_3cca11();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_3cca11();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sin_3cca11());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_3cca11();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sin_3cca11());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_3cca11();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025E3F7ECD10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.fxc.hlsl
index 7db003c..56dd003 100644
--- a/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA659BEB50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000220638B6550(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.fxc.hlsl
index 0ff6cb6..bd2db9a 100644
--- a/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_5c0712() {
+vector<float16_t, 4> sin_5c0712() {
   vector<float16_t, 4> arg_0 = (float16_t(1.5703125h)).xxxx;
   vector<float16_t, 4> res = sin(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_5c0712();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_5c0712();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sin_5c0712());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_5c0712();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sin_5c0712());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_5c0712();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FB59D77F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.fxc.hlsl
index 7167e10..bcae561 100644
--- a/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018A0E0EF390(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022698B8BAC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.fxc.hlsl
index 08dd07b..d29a984 100644
--- a/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sin_66a59f() {
+float16_t sin_66a59f() {
   float16_t arg_0 = float16_t(1.5703125h);
   float16_t res = sin(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sin_66a59f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sin_66a59f();
+  prevent_dce.Store<float16_t>(0u, sin_66a59f());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sin_66a59f();
+  prevent_dce.Store<float16_t>(0u, sin_66a59f());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sin_66a59f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000204C75ABE40(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.fxc.hlsl
index 0e5d7b3..fdc6152 100644
--- a/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000183428FE9C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F1BD7038C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.fxc.hlsl
index eb361d6..8d53c40 100644
--- a/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_0908c1() {
+vector<float16_t, 3> sinh_0908c1() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = sinh(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_0908c1();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_0908c1();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sinh_0908c1());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_0908c1();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sinh_0908c1());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_0908c1();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001422720FD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.fxc.hlsl
index 10a5f7fe..90e2b97 100644
--- a/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000216907A5020(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000143AF9C8F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.fxc.hlsl
index 3dd5e21..9b1a65c 100644
--- a/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_69cce2() {
+float16_t sinh_69cce2() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = sinh(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_69cce2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_69cce2();
+  prevent_dce.Store<float16_t>(0u, sinh_69cce2());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_69cce2();
+  prevent_dce.Store<float16_t>(0u, sinh_69cce2());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_69cce2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017FBBB46C90(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.fxc.hlsl
index 1ca3257..bf6ce5f 100644
--- a/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B7B69CE3A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021A2DDDCB80(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.fxc.hlsl
index 31eed65..f106ad5 100644
--- a/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_924f19() {
+vector<float16_t, 2> sinh_924f19() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = sinh(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_924f19();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_924f19();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sinh_924f19());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_924f19();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sinh_924f19());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_924f19();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000187EF1165F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.fxc.hlsl
index 2d2025c..5f4717e 100644
--- a/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EBE0D454A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026DFD3D8FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.fxc.hlsl
index 1008b88..4072b0d 100644
--- a/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sinh_ba7e25() {
+vector<float16_t, 4> sinh_ba7e25() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = sinh(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sinh_ba7e25();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sinh_ba7e25();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sinh_ba7e25());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sinh_ba7e25();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sinh_ba7e25());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sinh_ba7e25();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002627CA49470(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl
index eba3ba8..63de1b5 100644
--- a/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B8E30EEA10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021D59488FA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.fxc.hlsl
index 90ca1c6..eb5e11f 100644
--- a/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_12c031() {
+vector<float16_t, 2> smoothstep_12c031() {
   vector<float16_t, 2> arg_0 = (float16_t(2.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(4.0h)).xx;
   vector<float16_t, 2> arg_2 = (float16_t(3.0h)).xx;
   vector<float16_t, 2> res = smoothstep(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_12c031();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_12c031();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, smoothstep_12c031());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_12c031();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, smoothstep_12c031());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_12c031();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018CB4FDBC40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl
index b03b01c..1da4257 100644
--- a/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019F3378E120(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001954F988800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.fxc.hlsl
index 3ce6694..98dcffd 100644
--- a/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_586e12() {
+float16_t smoothstep_586e12() {
   float16_t arg_0 = float16_t(2.0h);
   float16_t arg_1 = float16_t(4.0h);
   float16_t arg_2 = float16_t(3.0h);
   float16_t res = smoothstep(arg_0, arg_1, arg_2);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_586e12();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_586e12();
+  prevent_dce.Store<float16_t>(0u, smoothstep_586e12());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_586e12();
+  prevent_dce.Store<float16_t>(0u, smoothstep_586e12());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_586e12();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023B7ABE42B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl
index 1a68491..888643f 100644
--- a/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002739D765F80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EEA8F654F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.fxc.hlsl
index 66a7084..8231aa6 100644
--- a/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_6e7a74() {
+vector<float16_t, 3> smoothstep_6e7a74() {
   vector<float16_t, 3> arg_0 = (float16_t(2.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(4.0h)).xxx;
   vector<float16_t, 3> arg_2 = (float16_t(3.0h)).xxx;
   vector<float16_t, 3> res = smoothstep(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_6e7a74();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_6e7a74();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, smoothstep_6e7a74());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_6e7a74();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, smoothstep_6e7a74());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_6e7a74();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000246BCC857E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl
index e7f22dc..6b73ee5 100644
--- a/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A2C52BECB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020EEB3CBBF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.fxc.hlsl
index 47b65c9..124b77b 100644
--- a/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.fxc.hlsl
@@ -1,38 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void smoothstep_c43ebd() {
+vector<float16_t, 4> smoothstep_c43ebd() {
   vector<float16_t, 4> arg_0 = (float16_t(2.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(4.0h)).xxxx;
   vector<float16_t, 4> arg_2 = (float16_t(3.0h)).xxxx;
   vector<float16_t, 4> res = smoothstep(arg_0, arg_1, arg_2);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  smoothstep_c43ebd();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  smoothstep_c43ebd();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, smoothstep_c43ebd());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  smoothstep_c43ebd();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, smoothstep_c43ebd());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = smoothstep_c43ebd();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000238E0B634A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl
index f32655a..c799ce6 100644
--- a/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002570E01E8B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029B7FEA9DC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.fxc.hlsl
index a57f306..081ef0d 100644
--- a/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_803d1c() {
+vector<float16_t, 4> sqrt_803d1c() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = sqrt(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_803d1c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_803d1c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sqrt_803d1c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_803d1c();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, sqrt_803d1c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_803d1c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027AB6BD1330(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl
index b71e7c3..9a17fbf 100644
--- a/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A0F798FBB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D565AA8F80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.fxc.hlsl
index 270e158..f97fa49 100644
--- a/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_895a0c() {
+vector<float16_t, 3> sqrt_895a0c() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = sqrt(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_895a0c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_895a0c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sqrt_895a0c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_895a0c();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, sqrt_895a0c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_895a0c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002233C3265C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl
index df49c10..2bb986c 100644
--- a/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015AF983EB10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000211259F93F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.fxc.hlsl
index e684895..24476bc 100644
--- a/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_d9ab4d() {
+vector<float16_t, 2> sqrt_d9ab4d() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = sqrt(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_d9ab4d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_d9ab4d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sqrt_d9ab4d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_d9ab4d();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, sqrt_d9ab4d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_d9ab4d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000253AA4D9890(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl
index a72b9f6..82508d8 100644
--- a/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CEFE927FB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A349DA8B20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.fxc.hlsl
index 6b2cc9c..674e392 100644
--- a/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void sqrt_ec33e9() {
+float16_t sqrt_ec33e9() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = sqrt(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  sqrt_ec33e9();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  sqrt_ec33e9();
+  prevent_dce.Store<float16_t>(0u, sqrt_ec33e9());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  sqrt_ec33e9();
+  prevent_dce.Store<float16_t>(0u, sqrt_ec33e9());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = sqrt_ec33e9();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D92499FE30(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl
index 8e2b55a..6f3df0c 100644
--- a/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002F59B9F0150(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000204F33BAA30(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.fxc.hlsl
index bcc868b..3b1c5f4 100644
--- a/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_07cb06() {
+vector<float16_t, 2> step_07cb06() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> arg_1 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = step(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_07cb06();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_07cb06();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, step_07cb06());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_07cb06();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, step_07cb06());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_07cb06();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012463145780(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.fxc.hlsl
index e2ec7eb..bd152d2 100644
--- a/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023521630A10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F8A288B800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/step/630d07.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.fxc.hlsl
index 59a6ce9..15f2687 100644
--- a/test/tint/builtins/gen/var/step/630d07.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_630d07() {
+float16_t step_630d07() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t arg_1 = float16_t(1.0h);
   float16_t res = step(arg_0, arg_1);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_630d07();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_630d07();
+  prevent_dce.Store<float16_t>(0u, step_630d07());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_630d07();
+  prevent_dce.Store<float16_t>(0u, step_630d07());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_630d07();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E5E55A38D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.fxc.hlsl
index 8be8016..a092308 100644
--- a/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019BE2735030(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000016B86DE61F0(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/step/baa320.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.fxc.hlsl
index 1d50723..eea34c3 100644
--- a/test/tint/builtins/gen/var/step/baa320.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_baa320() {
+vector<float16_t, 4> step_baa320() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> arg_1 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = step(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_baa320();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_baa320();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, step_baa320());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_baa320();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, step_baa320());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_baa320();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A41FE0D3D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.fxc.hlsl
index 490268b..3aa95cc 100644
--- a/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025AC5A75050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000283FFAECF50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.fxc.hlsl
index 374e8a2..3c2dae9 100644
--- a/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.fxc.hlsl
@@ -1,37 +1,48 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void step_cc6b61() {
+vector<float16_t, 3> step_cc6b61() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> arg_1 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = step(arg_0, arg_1);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  step_cc6b61();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  step_cc6b61();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, step_cc6b61());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  step_cc6b61();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, step_cc6b61());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = step_cc6b61();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020563D35D50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.fxc.hlsl
index e17d8da..1fb3ac7 100644
--- a/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000231D5675050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000207792A3EA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl
index 91a4675..c240c89 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupAdd_0dd12a());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupAdd_0dd12a());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016724106660(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000256C403D3F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl
index fd81b5e..1162358 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/0dd12a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018947FC92C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002480E9D5FC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl
index 04c19e1..647713c 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAdd_1280c8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAdd_1280c8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CC18BBFCC0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000025A699701D0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl
index 798c152..d2895cf 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/1280c8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002321A239300(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000002481D2ABBC0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl
index 2f3bfca..076a7c3 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAdd_1eb429()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAdd_1eb429()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000228FD2163D0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000260CB925210(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl
index 84f50dd..b3efd78 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/1eb429.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EF28BD9300(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000023EBF8ABDC0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.fxc.hlsl
index ab34301..f86504f 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupAdd_225207());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupAdd_225207());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026C96842240(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002E8C2C55230(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl
index 5d76eb5..f41678d 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/225207.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A5A55190A0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F1E86FFCB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.fxc.hlsl
index d60d8d3..5777cc2 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAdd_22d041()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAdd_22d041()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000281DEC92CF0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000013B16919B60(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl
index fd2d540..f4262b4 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/22d041.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021D851200A0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001CED295E3C0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl
index af14f6c..ee3ee64 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAdd_28db2c()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAdd_28db2c()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019DD2C63750(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001B718694F70(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl
index ebf7725..7a9f6dc 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/28db2c.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000292A98FCA00(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000002123198BBC0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl
index 878f409..3bde98a 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupAdd_2ab40a());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupAdd_2ab40a());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AF7F43CA40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002328CFE46F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl
index bfd8857..d295ea4 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/2ab40a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002DAC5FDFF40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029FEFA9D2A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl
index 5d3f336..35f8426 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAdd_3854ae()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAdd_3854ae()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023728F093C0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000020567806F90(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl
index 6c0e3df..d89c9a0 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/3854ae.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D83AFAEFE0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001C0909ABB20(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl
index c74ace4..fa5fff3 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAdd_6587ff()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAdd_6587ff()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AB9FDFEBE0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000018936E6AF00(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl
index 14cfc19..48884764 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/6587ff.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AE40F7EED0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001F5695B5000(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl
index 2efd9d1..08f0f3a 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAdd_7d1215()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAdd_7d1215()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022CB470F2E0(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000023DB4115290(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl
index 4281a17..30e5ff0 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/7d1215.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E95384F2D0(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001717104BBC0(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl
index cb24be4..652e6e7 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAdd_8f4c15()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAdd_8f4c15()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024228742450(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000023515B046C0(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl
index b26b47f..cbcffb9 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/8f4c15.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A961DC9300(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001FF42349B00(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl
index 4882e88..6e8f950 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAdd_b61df7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAdd_b61df7()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AD75DCE340(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000024CEE2DB4D0(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl
index cee10a1..82e6bae 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/b61df7.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014E5500EC90(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000002264E6BD560(5,14-33): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl
index 44bb6f4..e6309e1 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAdd_ba53f9()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAdd_ba53f9()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DAD6877D80(5,13-32): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x00000227737E0D50(5,13-32): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl
index 24788c4..d4ba660 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/ba53f9.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F592E4EA70(5,13-32): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001FE02ABDD50(5,13-32): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl
index a7ec2f5..da98cc4 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupAdd_cae1ed());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupAdd_cae1ed());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029DB8637E60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AC68E046F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl
index 2a8d888..8bbb2bf 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/cae1ed.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F27BB1F100(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E249A6E1C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl
index 54e780b..04853f4 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAdd_dcf73f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAdd_dcf73f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018791DB7DD0(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000002685E096030(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl
index 7ca2f23..13a6617 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/dcf73f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002265E0DF7C0(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000001CCE97A9B00(5,16-35): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl
index 4835cbe..2ef32b2 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAdd_fbc357()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAdd_fbc357()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028641012BE0(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x0000019D21522730(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl
index d07dab8..fdd83e0 100644
--- a/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAdd/fbc357.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000218964C0C40(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
+C:\src\dawn\Shader@0x000002A174246E20(5,15-34): error X3004: undeclared identifier 'WaveActiveSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.fxc.hlsl
index a195482..e07ea92 100644
--- a/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupAll_c962bd()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023A1DD34140(5,14-37): error X3004: undeclared identifier 'WaveActiveAllTrue'
+
diff --git a/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl
index 17f2d2d..8912659 100644
--- a/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAll/c962bd.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016D3B3EF140(5,14-37): error X3004: undeclared identifier 'WaveActiveAllTrue'
+C:\src\dawn\Shader@0x000001797DFDDE70(5,14-37): error X3004: undeclared identifier 'WaveActiveAllTrue'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl
index 38424dc..dd0b8d0 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAnd_1877b3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAnd_1877b3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D167C11700(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000204FC1A0600(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl
index c2e276a..589e5c5 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/1877b3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029CBD46CA00(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000220F3A2FD80(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.fxc.hlsl
index 4614ed6..7e213af 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAnd_376802()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAnd_376802()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C13E4828F0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001463681B4D0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl
index 829b53c..f5affd2 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/376802.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021DBCEDCA00(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000002CBAAC3F830(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl
index ea0a82f..6112e55 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupAnd_4adc72()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupAnd_4adc72()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D7E87F1CA0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000014D89F89B60(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl
index 256bfef..ae6c939 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/4adc72.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000111D8A48FE0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000275B9856890(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.fxc.hlsl
index 810be0a..ddaef6f 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAnd_4df632()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAnd_4df632()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DBF3300A70(5,14-36): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000021FB52E9510(5,14-36): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl
index b2ce6ce..148d2e3 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/4df632.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000213B04DEC90(5,14-36): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000028CF2EA67C0(5,14-36): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.fxc.hlsl
index e89825f..6dd185e 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAnd_97655b()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAnd_97655b()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000147CD86DCC0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000021702CEAAF0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl
index 169b2d3..d5d0328 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/97655b.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C5C6558E20(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001E3FDB0FD80(5,20-50): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl
index 8b0a69e..7070004 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupAnd_ad0cd3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupAnd_ad0cd3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000208C8E8C5A0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000002111F1DA0D0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl
index 1a0163c..c079653 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/ad0cd3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DACD319300(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x00000294D6697F60(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl
index 6cff6fd..3e9e160 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupAnd_c6fc92()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupAnd_c6fc92()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000136FE991080(5,19-49): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x0000016FF880F8D0(5,19-49): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl
index 5679a5f..e4bdbb7 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/c6fc92.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FB6DE78D70(5,19-49): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000002CC4715BB20(5,19-49): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl
index 8f4fcbf..645a703 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupAnd_d2c9a6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupAnd_d2c9a6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CB4B9D1740(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000001876B5F01D0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl
index 1689f86..0a56b8f 100644
--- a/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAnd/d2c9a6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020400DEEED0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
+C:\src\dawn\Shader@0x000002222127E0B0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitAnd'
 
diff --git a/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.fxc.hlsl
index 5f24ce8..a1d467b 100644
--- a/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupAny_cddda0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015FF5E49B50(5,14-37): error X3004: undeclared identifier 'WaveActiveAnyTrue'
+
diff --git a/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl
index a4dd4d3..61e86fd 100644
--- a/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupAny/cddda0.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026958698F20(5,14-37): error X3004: undeclared identifier 'WaveActiveAnyTrue'
+C:\src\dawn\Shader@0x0000024C7E324E90(5,14-37): error X3004: undeclared identifier 'WaveActiveAnyTrue'
 
diff --git a/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl
index 9da5773..0850cd1 100644
--- a/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBallot_1a8251()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBallot_1a8251()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000216ACDFD010(5,15-37): error X3004: undeclared identifier 'WaveActiveBallot'
+C:\src\dawn\Shader@0x0000020A5D1F0260(5,15-37): error X3004: undeclared identifier 'WaveActiveBallot'
 
diff --git a/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl
index e2387ff..6e04aea 100644
--- a/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBallot/1a8251.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ACFADF9100(5,15-37): error X3004: undeclared identifier 'WaveActiveBallot'
+C:\src\dawn\Shader@0x000001F7A31646A0(5,15-37): error X3004: undeclared identifier 'WaveActiveBallot'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl
index 7cf540e..bdcdd58 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcast_02f329());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AD4920FEA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl
index b875724..113cf8d 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/02f329.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C3EB06F350(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000128E7C2AFE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl
index f0994ff..a8c75ea 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupBroadcast_07e2d8());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupBroadcast_07e2d8());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DDF4F1F440(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E6B1631A00(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl
index 07059f1..07bdd1b 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/07e2d8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E883950700(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001A47C08C400(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
index 12cce6d..baf6593 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupBroadcast_08beca()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupBroadcast_08beca()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000260FE0CC900(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002E0ECA75640(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl
index 7caaf1d..34db0c3 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/08beca.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BBE5EF02B0(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002321DABFB60(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl
index 26f3f2a..b249e10 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcast_0f44e2());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcast_0f44e2());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000166868CD1D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002314F0100A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl
index 43a12ba..cf412a3 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/0f44e2.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000258064D9220(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016CB2C3AFF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl
index e3076d9..5781e10 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcast_13f36c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcast_13f36c());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD198BD1D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FAED10F400(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl
index f04b3ad..0c7527a 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/13f36c.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002505806F110(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D1392DBE00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
index 45e9a82..3059b74 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupBroadcast_1d79c7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupBroadcast_1d79c7()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002205DFD0120(5,13-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000012FD6D203C0(5,13-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl
index 00fb2d3..69b87fb 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/1d79c7.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025163BF12E0(5,13-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001CEFE4E8080(5,13-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl
index a58fe8f..ead4e2c 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBroadcast_279027()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_279027()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024CFF3BFD20(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001A457BC60F0(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl
index 89f2bc3..9df7c09 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/279027.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000233AA7DED80(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001B1A5CFC260(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl
index 88fd396..ae99392 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_2b59c9()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000241FCCED6B0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl
index 1de568d..410e5c6 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/2b59c9.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D387CCEF40(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000015BD72AF980(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl
index 3ca106d..eed41a6 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_34ae44()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015773E587C0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl
index 1437488..4baa24b 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/34ae44.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002433D8AEF60(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000024A3CCABE40(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl
index 6407ed3..2ac4659 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupBroadcast_34fa3d()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_34fa3d()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002345F903470(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000014E7FE4FE40(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl
index 7a569e5..b86a67c 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/34fa3d.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000252A4ADF360(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001AC7A80A970(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl
index 4696146..989146c 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupBroadcast_3e6879()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_3e6879()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012FD9152F00(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000272BC115670(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl
index 2930431..bf7d009 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/3e6879.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000248BF08EF40(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000027993AFBD80(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl
index 551b57c..c30bcbb 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcast_41e5d7());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcast_41e5d7());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002009A3ED1D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019CB2C9FAA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl
index 1454d21..3ff5032 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/41e5d7.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ECC5DC4950(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029FECC238D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
index 755b2e1..79b579a 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcast_49de94()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023796A96D30(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl
index 65b5205..1aa1851 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/49de94.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000201D0C50340(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002C6CD7F4700(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl
index 80658b6..5af2373 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupBroadcast_4a4334()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_4a4334()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015D73FA0A90(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000012D72478DA0(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl
index c7c1d84..17cf990 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/4a4334.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A8F35412F0(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000017876AFC340(5,15-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl
index eb0b8b2..4e24e1e 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupBroadcast_5196c8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_5196c8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028954BBF3F0(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001F0E6919BE0(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl
index 683ae81..638a5bb 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/5196c8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021E6B3396A0(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000013DFEBFDE80(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl
index b9137f7..614f87e 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_6290a2()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002483F47BFC0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl
index f105160..4e07772 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/6290a2.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A38A63A530(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001C9899251E0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl
index 5e8374f..19df21f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupBroadcast_719ad6());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000175160EBBC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl
index 5b5d95f..417a5d4 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/719ad6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002253981FAC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001808F24A830(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl
index 5913e10..58a2fb4 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_727609()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B59704BDF0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl
index c583be9..462fa9a 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/727609.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002237908EF60(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002372A4B0BE0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl
index 856c717..f5946a1 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_838c78()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002504F7B5670(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl
index 661f516..25e897f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/838c78.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DDF45297B0(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001DDAA8ED440(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
index 2ea4f94..a8737d2 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcast_867093()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002228993AFA0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl
index a19a828..e7923ad 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/867093.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025008F59990(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002399B78FB80(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl
index 623dd60..c631448 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_8855b2()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000226CB450740(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl
index b5e278e..6c12907 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/8855b2.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000225975DFF90(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000167A66C9BE0(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl
index 54b5589..cf1306d 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupBroadcast_912ff5()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_912ff5()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EAC6861870(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000264E425CDB0(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl
index effa283..e202298 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/912ff5.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019E7E9FEF30(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001BC1C374AF0(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
index 3c979fa..b0839d6 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcast_9ccdca()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025FB1A74700(5,13-36): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl
index b4acf5b..eede40c 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/9ccdca.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D8C0D50230(5,13-36): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000196ADBC5C20(5,13-36): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl
index ccb6b4d..9297ccc 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_a279d7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002090CFE0EF0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl
index eeb57ea..43cac0f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/a279d7.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C4189A9350(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000023818AA58D0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl
index bce1a34..46324a1 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcast_a3b3e5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DA7FA961F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl
index 24510f9..c3df1d4 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/a3b3e5.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E0919EF510(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E2D6060000(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl
index b4f143f..f349014 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBroadcast_b7e93b()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_b7e93b()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011B9698C750(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002193EBD3C50(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl
index 18adea1..c4263ec 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/b7e93b.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019D7C9BEF40(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001C2598DDE80(5,16-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
index 9dcdf41..65e1767 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupBroadcast_c36fe1()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupBroadcast_c36fe1()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CF1DB58740(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000235E56B4700(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl
index 63b5489..fe335aa 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/c36fe1.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000212695E8FA0(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002BA20D3E9E0(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl
index a1441cb..eecc35c 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_cd7aa1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000185C3E83E30(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl
index d4fac6f..85faf6f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/cd7aa1.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E1B582F350(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000022A8F0F51E0(5,16-39): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl
index ea4ba8b..07a4e0a 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupBroadcast_e275c8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupBroadcast_e275c8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002304F8DF590(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001B503E746E0(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl
index df90898..1abcbc2 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/e275c8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000206DB25FF40(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000011A38E58DE0(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl
index 0ec30ca..7051cdf 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcast_e4dd1a());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AFCDECCE10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl
index fbff790..8227666 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/e4dd1a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CC6E2FE130(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000251CA485330(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl
index da1ba51..980c6e1 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupBroadcast_f637f9()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupBroadcast_f637f9()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247A6AEF3F0(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001B2408A0260(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl
index 56814b0..002de7a 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/f637f9.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026909E7EF60(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001796B6EBD80(5,14-38): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl
index c533aa0..339190f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcast_fa6810()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002196B8E4B30(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl
index deaef7a..93b647b 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcast/fa6810.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022C471CF040(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001D219B2C280(5,14-37): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl
index 145d192..b51f53d 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcastFirst_0538e1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021202725010(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl
index a3ca7a6..246a7b8 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0538e1.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002314E6C9260(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000020FEECEFB80(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl
index 49a9e38..6b69baa 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupBroadcastFirst_0e58ec());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013B184AFC00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl
index 8bc8381..3ee36d9 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/0e58ec.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CA3F8092C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021B5BE5FC00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl
index 0378b88..c1a09e4 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupBroadcastFirst_151e52());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A10EBCBDA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl
index d5a50f9..7b03041 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/151e52.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024502C7FE30(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001617919BDC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl
index 868f07f..5cf9564 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcastFirst_1d9530()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026B73DDC9A0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl
index c0ffbfa..2d08819 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/1d9530.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A40574CA20(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000021ECBDDFDF0(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl
index fe8da5d..5f85478 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcastFirst_5c6962()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000161B97DDAD0(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl
index 7e70845..f3be0d6 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5c6962.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AE19AAF530(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x00000208E54EFF70(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl
index c7b949c..fbe3c9b 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcastFirst_5e5b6f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026AA86E9510(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl
index 9cd2b9f..bea37cc 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/5e5b6f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027736F50380(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001E311449D20(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl
index fe8bee0..adf49f7 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcastFirst_612d6f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021D9C1EFF20(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl
index 18b0aa4..7117f6c 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/612d6f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000190ABF0C890(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000028E0BF15650(5,15-38): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl
index 8d733c5..8802930 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcastFirst_61f177()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029C77E94EA0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl
index 1e8f461..61a7c9f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/61f177.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001761B2A02E0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001B2411B0E50(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl
index c456e4e..9cd5aaf 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcastFirst_6945f6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AA2277FCD0(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl
index 2bd52c4..9013267 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/6945f6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025C90F70940(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001E3EE0DC260(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl
index 53dfd80..ed4460f 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupBroadcastFirst_705aad());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B259B538C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl
index 0917c63..a088ae5 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/705aad.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BC301EA700(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A8295538F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl
index ff6ed92..c336d2d 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store2(0u, asuint(subgroupBroadcastFirst_85b351()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D44C0B81F0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl
index 3a51d9a..16d5634 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/85b351.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C477FB8EF0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000002CC8D8846E0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl
index 2026ab3..31a75bb 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcastFirst_8ae580()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BFDF549520(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl
index 92cb8de..628f6db 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/8ae580.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000167E36FF960(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x00000279C8899D20(5,16-39): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl
index 773c4d6..84ef560 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store(0u, asuint(subgroupBroadcastFirst_9a1bdc()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A8661668F0(5,13-36): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl
index c1bb5fb..c808d24 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9a1bdc.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A10C1E99C0(5,13-36): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x000001C81586FE10(5,13-36): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl
index d9e0ee3..ce32acb 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store4(0u, asuint(subgroupBroadcastFirst_9dccee()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F49D5046D0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl
index 12e01d7..cb9fcc6 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/9dccee.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B9243104C0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000022061A3C280(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl
index 906a1e1..cc28f65 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupBroadcastFirst_a11307());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001535F264DC0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl
index 37cd065..2b72324 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/a11307.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025B9EFC92E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B0539338F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl
index 0b4261f..0afc3c9 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -18,3 +18,6 @@
   prevent_dce.Store3(0u, asuint(subgroupBroadcastFirst_e820d4()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E34FDA5650(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+
diff --git a/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl
index 8e29f9e..21d6fc7 100644
--- a/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupBroadcastFirst/e820d4.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000243918BEF40(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
+C:\src\dawn\Shader@0x0000022DD99AFDE0(5,14-37): error X3004: undeclared identifier 'WaveReadLaneFirst'
 
diff --git a/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.fxc.hlsl
index c05cc9d5..fa32639 100644
--- a/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -17,3 +17,6 @@
   prevent_dce.Store(0u, asuint(subgroupElect_3943d6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019AE48D0580(4,14-30): error X3004: undeclared identifier 'WaveIsFirstLane'
+
diff --git a/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl
index 8d3807d..8d6df93 100644
--- a/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupElect/3943d6.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002107D61EEC0(4,14-30): error X3004: undeclared identifier 'WaveIsFirstLane'
+C:\src\dawn\Shader@0x0000012C4AD66510(4,14-30): error X3004: undeclared identifier 'WaveIsFirstLane'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl
index e6cd814..e8cc81b 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveAdd_01de08());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveAdd_01de08());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021B04B460F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E5AB9E38C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl
index 3dd537b..cc70c6c 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/01de08.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CEC473ECA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027609FB38F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl
index ee7f6d0..2da6ccf 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_0ff95a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_0ff95a()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023915FAC730(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000275CCE946D0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl
index ba58b03..f4b5dae 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/0ff95a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002518DEE9940(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000028154DCFDD0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl
index e66eb0e..5899569 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_406ab4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_406ab4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DCC507C5C0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000200380D9510(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl
index 538dcd7..46585d2 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/406ab4.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B59CEBEF40(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001D581A9F7A0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl
index 04a5e91..8019c71 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_41cfde()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_41cfde()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000185503CC780(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001C5A507C9A0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl
index 8fdec7d..6a2daff 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/41cfde.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019DE825FB00(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000276D134BDA0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl
index c54fe37..3005a34 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_42684c()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_42684c()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002530D1F3020(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001427EE24EA0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl
index 1756bcb..6cecf0b 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/42684c.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EB07D300C0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002DBC95DBDE0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl
index d070407..ab93bd1 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_48acea()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_48acea()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CB9AB514C0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000020CEC494ED0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl
index c3f592a..f101a8a 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/48acea.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000247DC4A12B0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002794B7A7E00(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl
index a3a5fc1..9047303 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupExclusiveAdd_4a1568());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupExclusiveAdd_4a1568());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002893BF7CE00(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001CEE364F950(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl
index 6ae6323..aa1227a 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4a1568.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D3FA2E9BA0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000206D37AAB10(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl
index 9a25cef..2089efd 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_4c8024()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_4c8024()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BD577EF2F0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001E40D745650(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl
index 974bd6a..9a24b29 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/4c8024.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000215F4E2EF20(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001F9A738BDA0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl
index 427b2b1..940c08c 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_71ad0f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_71ad0f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019D312F7D40(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001B47D8499D0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl
index f717a52..7fa7de2 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/71ad0f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002E4BB6500F0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000016759F2FDE0(5,16-35): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl
index db7f289..0557347 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveAdd_95e984());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveAdd_95e984());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C70D7B6B10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000184B0DF38C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl
index c9c550b..3cea5b8 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/95e984.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DDCB2A92E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A5AA4738D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl
index a1fc755..5d2037d 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_967e38()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_967e38()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CD1519A860(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x00000231E49E4E80(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl
index 4af98d9..5ca2d60 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/967e38.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024AA38A3450(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000020B702EF7A0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl
index 0ca6f53..da43692 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_b0c261()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveAdd_b0c261()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015B056AC640(5,13-32): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000023E5CE146C0(5,13-32): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl
index 7db2c7a..56fcd52 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/b0c261.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022624A1F390(5,13-32): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000022C66B3FB80(5,13-32): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl
index d1c2ada..81d6ade 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_c08160()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveAdd_c08160()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E796C6F3F0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001BE61194ED0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl
index 420cca3..ef78769 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/c08160.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024428A3F2A0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000002818C1A6B60(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl
index 4f40801..9bd434c 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveAdd_e58e23());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveAdd_e58e23());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000218B4A18C50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026F52DF5F20(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl
index aa03a9e..2c94a85 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/e58e23.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018E37DB92C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027FF35F38F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl
index 0fb9ad4..544d106 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_ec300f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveAdd_ec300f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002EF15578210(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001FB6730D4C0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl
index 6784308..786741e 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/ec300f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ABC4BC8ED0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000022B5A57DCD0(5,15-34): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl
index bad746d..c7d6b64 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_f0f712()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveAdd_f0f712()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A5F2BA0120(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x0000014506B146C0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl
index 462ca8d..8d6e53c 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveAdd/f0f712.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020F30C90310(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
+C:\src\dawn\Shader@0x000001E4A67AFDF0(5,14-33): error X3004: undeclared identifier 'WavePrefixSum'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl
index 302ce58..1f56630 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_000b92()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_000b92()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001777B86C6C0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001CA2ACA4710(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl
index 1386700..092ebe9 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/000b92.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026E90E4EEA0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x00000210408BFDD0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl
index e373375..22ebf25 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_019660()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_019660()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FE2E29D430(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000026B9938FD80(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl
index e47083e..106d4ca 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/019660.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022A8B08FB30(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x00000161DFD146E0(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl
index 5ab948a..0009984 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_0a04d5()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_0a04d5()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000235DDB1D430(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x00000228485D6EF0(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl
index ae2f381..4ba1f02 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/0a04d5.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021852E48FA0(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000024487D24C90(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl
index 0c6c203..686be30 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveMul_13ba26());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupExclusiveMul_13ba26());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002043BD7D1A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019029ED6220(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl
index 83b0655..1215778 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/13ba26.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029C620B92E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000234CE41E190(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl
index 366636d..c7ffbfa 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_25d1b9()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_25d1b9()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E3784F6740(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001C6C330F860(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl
index b7988b6..a140b2f 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/25d1b9.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024B22E0EEA0(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000012AF6CB3D30(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl
index 25f0373..13580a5 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_4525a3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_4525a3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AA39901970(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001EE62E446D0(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl
index b3826f5..d83ad22 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/4525a3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000226BF920360(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002A1412AC260(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl
index 5ff4f26..cbbdcbb 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupExclusiveMul_6f431e());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupExclusiveMul_6f431e());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C0F2921970(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000019B447346B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl
index 1b0f4d6..60dc6d2 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/6f431e.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023FD7919170(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001AB3EF75010(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl
index f9b8be4..8019b54 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_7b5f57()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupExclusiveMul_7b5f57()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001868919D5F0(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x00000159721AC3E0(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl
index 11b975e..036a160 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/7b5f57.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F4B2D5DE20(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000021FB9009BB0(5,16-39): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl
index da1c1eb..84a73d2 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_87f23e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_87f23e()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027E5CD61490(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001A8E8530ED0(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl
index 97403b0..d9fde5e 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/87f23e.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F4AE6D980(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000018BC23846E0(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl
index 7e74ebe..6f21028 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveMul_98b2e4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveMul_98b2e4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012F140BEFF0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000024FC358A000(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl
index eff2203..5f5d763 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/98b2e4.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001945A319260(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000013E919146B0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl
index 9dbbebb..e661589 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveMul_a07956());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupExclusiveMul_a07956());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ABD42A6D10(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023C6D394DB0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl
index 118b8d69..d45501e 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/a07956.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000237F39092E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FEB2E56F80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl
index 0916ebf..744d3ba 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveMul_a23002()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveMul_a23002()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002022064D400(5,13-36): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000028AFF618A20(5,13-36): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl
index f1e515a..562598b 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/a23002.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021B01BFEF10(5,13-36): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001886B8D8640(5,13-36): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl
index 24eacaf..48b80be 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_d1d490()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupExclusiveMul_d1d490()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000117D6E9D1B0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001A32CC746C0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl
index bfd6577..0a0fb22 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/d1d490.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019CDBB7D980(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000002E93EA35190(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl
index bb78789..501a3b4 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupExclusiveMul_dc51f8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupExclusiveMul_dc51f8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DD5D333B80(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001F9517FBA50(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl
index 1295c6f..318768a 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/dc51f8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EA7B9CF960(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001DD3063FDE0(5,14-37): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl
index 7acc82d..226d5aa 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveMul_e88d1c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupExclusiveMul_e88d1c());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000143BC5A8A30(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DF8E73FC00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl
index dcdfac0..39c70b6 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/e88d1c.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE31CB92E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000190A27AFC00(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl
index 43392ab..9fffbbe 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_f039f4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupExclusiveMul_f039f4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026D3A9EEFF0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x0000015AAFA746C0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl
index b099c50..aa7c266 100644
--- a/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupExclusiveMul/f039f4.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002159A751290(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
+C:\src\dawn\Shader@0x000001608EDBC2B0(5,15-38): error X3004: undeclared identifier 'WavePrefixProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.fxc.hlsl
index 30a32d9..e3e8fd4 100644
--- a/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMax_0b0375()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMax_0b0375()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023362E746E0(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl
index f241a17..097e55c 100644
--- a/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/0b0375.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002267850E4F0(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001FB2FD59B00(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl
index 5a26c8c..f58f869 100644
--- a/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMax_15ccbf()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMax_15ccbf()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017210400610(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl
index 2c83fdb..76cdcba 100644
--- a/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/15ccbf.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023E6D2192A0(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x00000282A9C14690(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl
index 60b2935..fe324dc 100644
--- a/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMax_1a1a5f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMax_1a1a5f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023128255350(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl
index aa13560..15002a7 100644
--- a/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/1a1a5f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE9AB9F0D0(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x0000013396EBFB50(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.fxc.hlsl
index 41fb23f..4ec7392 100644
--- a/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMax_1fc846()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMax_1fc846()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021B90B1AAF0(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl
index 4fe31fb..f6fd1db 100644
--- a/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/1fc846.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018FE8089070(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x0000028C329DD100(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.fxc.hlsl
index 40b7f41..b778998 100644
--- a/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMax_23f502()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMax_23f502()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D907F49B10(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl
index 378bf98..a0cab90 100644
--- a/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/23f502.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002328D859730(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000002D30258BC10(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.fxc.hlsl
index d81abbf..1f0dbab 100644
--- a/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMax_33e339());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMax_33e339());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022B49CA46F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl
index 2b7f21c..ee9caa6 100644
--- a/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/33e339.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012D31F29670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021E3ADCFBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl
index aeb1349..70d7b7e 100644
--- a/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMax_4ea90e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMax_4ea90e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018544A49B10(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl
index c962bf5..29aa280 100644
--- a/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/4ea90e.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000268925E8FF0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x0000026DCFBDBBC0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.fxc.hlsl
index f8a4d75..b623f2a 100644
--- a/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupMax_5611a5());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupMax_5611a5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024D81454A40(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl
index c8682ee..671bec7 100644
--- a/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/5611a5.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000281927F9800(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002057317FCB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.fxc.hlsl
index 4a33a7b..6ceebb6 100644
--- a/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMax_6c913e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMax_6c913e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E40ECD0600(5,13-32): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl
index 387fb5f..647efd0 100644
--- a/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/6c913e.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002138BB99010(5,13-32): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001DD40494D20(5,13-32): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.fxc.hlsl
index c842838..4f58d00 100644
--- a/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMax_7c934c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMax_7c934c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021070BA0130(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl
index d2cf3ec..2df8a8f 100644
--- a/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/7c934c.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E1F9D0F780(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002436377FBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl
index bcfa07f..8317672 100644
--- a/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMax_7e81ea()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMax_7e81ea()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EF66D646A0(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl
index 969a213..e3cf6f3 100644
--- a/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/7e81ea.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000278B07BEEE0(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001FD05909B00(5,16-35): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.fxc.hlsl
index b852fe1..d1c0dea 100644
--- a/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMax_932164()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMax_932164()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000212E78E08D0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl
index d2ab178..42c1670 100644
--- a/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/932164.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000161C52094A0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x0000028092367790(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl
index 2c706b6..b9ee570 100644
--- a/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMax_a3afe3());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMax_a3afe3());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000253C719D730(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl
index c754532..3cf048a 100644
--- a/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/a3afe3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026C3886A1A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024C3B494FD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl
index 7e13d47..12286c4 100644
--- a/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMax_a3d5f7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMax_a3d5f7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E4BFC34CE0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl
index 445c807..9563441 100644
--- a/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/a3d5f7.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000282D72C12B0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000001D7C9DA9B00(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl
index 2fb323e..f7064ac 100644
--- a/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMax_b58cbf()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMax_b58cbf()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021134D28DD0(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl
index 10739fd..829e593 100644
--- a/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/b58cbf.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D728271130(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x000002AB5D30D540(5,14-33): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl
index 7c9cf14..8f1c192 100644
--- a/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMax_b8fb0e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMax_b8fb0e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025E04B6A830(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+
diff --git a/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl
index 8d954e6..a86ba2e 100644
--- a/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMax/b8fb0e.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016ABFD50150(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
+C:\src\dawn\Shader@0x00000215CA957390(5,15-34): error X3004: undeclared identifier 'WaveActiveMax'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.fxc.hlsl
index 299556f..17afcda 100644
--- a/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMin_030ad6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMin_030ad6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EB7856AE70(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl
index 8f8fb77..e923e78 100644
--- a/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/030ad6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002429FBB13E0(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001D287B100F0(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl
index 39ab016..575ca96 100644
--- a/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMin_0bc13a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMin_0bc13a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002615D7C9B60(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl
index 73972f9..104b032 100644
--- a/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/0bc13a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028832E58E40(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x00000214E07C46E0(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.fxc.hlsl
index a1c87ef..ea32c12 100644
--- a/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMin_1de104()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMin_1de104()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E7AAB201D0(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl
index 07eb6a8..e8b9ca0d 100644
--- a/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/1de104.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DFB4F68FF0(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x00000285E518BC10(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.fxc.hlsl
index 4ad1555..d82c339 100644
--- a/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMin_2493ab()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMin_2493ab()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002099D898D50(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl
index 0051089..7eb343d 100644
--- a/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/2493ab.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E8F54CCA00(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000002803F0CBB20(5,14-33): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.fxc.hlsl
index ba820a1..0a3e594 100644
--- a/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMin_2d8828()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMin_2d8828()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E7231B9B30(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl
index 4dfc1cb..d0eaac6 100644
--- a/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/2d8828.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000279099B9070(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000002290D1306D0(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.fxc.hlsl
index 67879b8..4f7767d 100644
--- a/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMin_337a21()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMin_337a21()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023AE6016030(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl
index 10f560d..51c56a0 100644
--- a/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/337a21.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FCB6FD92E0(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001EEEFF0BCA0(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.fxc.hlsl
index 2a615e5..154118d 100644
--- a/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMin_7def0a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMin_7def0a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B768A6F8D0(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl
index b3c5fe4..1a1bf0d 100644
--- a/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/7def0a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020BCA139550(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x00000217FC725200(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.fxc.hlsl
index 476a88e..bf9c9f8 100644
--- a/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMin_82ef23()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMin_82ef23()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021CFF1C9B10(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl
index 33cff6a..657f58c 100644
--- a/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/82ef23.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001932213F560(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000002B84868D100(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.fxc.hlsl
index fac3409..bd4c3fd 100644
--- a/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMin_836960()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMin_836960()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002951C045C60(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl
index 9cfb5c4..cd51806 100644
--- a/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/836960.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F10F14EF10(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001765FFDBE00(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl
index 599c3cb..aa8f7e2 100644
--- a/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMin_8bb8c1()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMin_8bb8c1()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002654EA3B080(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl
index 0d79e1b..a1be26d 100644
--- a/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/8bb8c1.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E695AB9170(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000002A70D646460(5,15-34): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl
index c0ec26d..2e920f6 100644
--- a/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupMin_8ffadc());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupMin_8ffadc());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB93954690(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl
index 59da431..859bab4 100644
--- a/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/8ffadc.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000256EAF9EFD0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D702745210(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl
index 3eea297..d04d419 100644
--- a/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMin_a96a2e()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMin_a96a2e()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EB208453E0(5,13-32): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl
index 7461cac..014e4c3 100644
--- a/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/a96a2e.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FFE6B0CA00(5,13-32): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x000001738D104E70(5,13-32): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl
index 2f46daf..a0ed6d4 100644
--- a/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMin_bbd9b0()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMin_bbd9b0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019E4353FCC0(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl
index 2865a9f..219a8b9 100644
--- a/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/bbd9b0.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DADF22CA00(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
+C:\src\dawn\Shader@0x00000144B05E0540(5,16-35): error X3004: undeclared identifier 'WaveActiveMin'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl
index 20d96ed..5515645 100644
--- a/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMin_c6da7c());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMin_c6da7c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018DAAFA0130(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl
index 310c848..9a25791 100644
--- a/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/c6da7c.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A81ECFECD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000283F639FD90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl
index 2ab05dd..87ff381 100644
--- a/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMin_cd3b9d());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMin_cd3b9d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020021CBD730(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl
index 673c6d6..b925607 100644
--- a/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/cd3b9d.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EC25BAF6C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018D3DAA4FD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.fxc.hlsl
index 9424fc6..74f7f99 100644
--- a/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not support before SM6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -8,8 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMin_d85be6());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMin_d85be6());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022DE1C474C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl
index 6422e10..57c01f4 100644
--- a/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMin/d85be6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EEB582E2E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016C13B0FBE0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl
index b11ee0f..f61a61d 100644
--- a/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMul_0de9d3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMul_0de9d3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000190E3105D30(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000188CAA59510(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl
index cf33ad5..ba99634 100644
--- a/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/0de9d3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D9EB94E090(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000193E371AFA0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.fxc.hlsl
index 490cf27..df4e527 100644
--- a/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<float16_t>(0u, subgroupMul_2941a2());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<float16_t>(0u, subgroupMul_2941a2());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011FF4B81950(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E3545F4FB0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl
index 9162a85..4fb8b7a 100644
--- a/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/2941a2.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D56B67E9E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000016825B811D0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.fxc.hlsl
index 7392c5f..9521f5b 100644
--- a/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMul_3fe886()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMul_3fe886()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017E9396C570(5,13-36): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000023E858B01D0(5,13-36): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl
index 15de49a3..e3ff3c5 100644
--- a/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/3fe886.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F6D978EC90(5,13-36): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000017B97AC5360(5,13-36): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl
index be530fe..4b612fa 100644
--- a/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupMul_4f8ee6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupMul_4f8ee6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000226A729C5D0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000027332258960(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl
index 1288065..aad2051 100644
--- a/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/4f8ee6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028CC21FCB00(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000018F8A44B5F0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.fxc.hlsl
index a7879f3..5c7b616 100644
--- a/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMul_53aee2());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupMul_53aee2());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D5AAE986E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F86D1AD6B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl
index 3c88a29..c694bd9 100644
--- a/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/53aee2.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BE17B192F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000203162DBFA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl
index 531a5d1..023848c 100644
--- a/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMul_5a8c86()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMul_5a8c86()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002DD34B2CA40(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000210AD5E4670(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl
index 9fea7ff..251b43b 100644
--- a/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/5a8c86.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000245A1758F20(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000021855744690(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.fxc.hlsl
index 158c9b6..7de157e 100644
--- a/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMul_66c813()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMul_66c813()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000150F0556020(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001AD901ED900(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl
index 39ec88b..cb2c209 100644
--- a/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/66c813.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014EA12B9310(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x00000192A06BFD80(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl
index 1737c74..d441e85 100644
--- a/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMul_6aaaf3());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupMul_6aaaf3());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017C08E7C980(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019EB3B49BF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl
index bad6d76..028565a 100644
--- a/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/6aaaf3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013CBABBF2A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C171B3FD90(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.fxc.hlsl
index ea6f6fd..d777888 100644
--- a/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMul_93eccd()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMul_93eccd()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019046D0CA40(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000024989E701D0(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl
index a01f8648..a41cb3e 100644
--- a/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/93eccd.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002045369FF10(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002D9752CBDC0(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.fxc.hlsl
index 5ccc3f3..a11b11f 100644
--- a/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMul_d584a2()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMul_d584a2()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A764FA2270(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000012B698F01D0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl
index 6c6537a..a3701b3 100644
--- a/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/d584a2.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025757622DC0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002228A814FC0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.fxc.hlsl
index 801a013..1915fbd 100644
--- a/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMul_dc672a()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMul_dc672a()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012085D71720(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002C5A061CEF0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl
index 3181a54..280b704 100644
--- a/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/dc672a.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D3A47730D0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000022CE2CD46E0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.fxc.hlsl
index 59bcc91..f3bf607 100644
--- a/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMul_dd1333()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMul_dd1333()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D174918BC0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001EB52178CF0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl
index a1a21c7..c88afdf 100644
--- a/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/dd1333.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002036B9C9CB0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000025EE496F9F0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl
index cee0f2e..8a26fed 100644
--- a/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMul_f2ac5b());
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupMul_f2ac5b());
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BF0EFF69B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F20FCE46A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl
index 35155ce..275fe12 100644
--- a/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/f2ac5b.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A7AABC9670(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D7F545B080(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.fxc.hlsl
index 23cf20a..ba2b37e 100644
--- a/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupMul_f78398()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupMul_f78398()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018B58DD0AC0(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x0000022EC64601D0(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl
index 097cceb..9dfb60b 100644
--- a/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/f78398.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015029818F30(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001DB21D646E0(5,16-39): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.fxc.hlsl
index b5b5c32..a461142 100644
--- a/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupMul_fa781b()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupMul_fa781b()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000194394D0A40(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001FB659601D0(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl
index 9605a39..6aa965c 100644
--- a/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/fa781b.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000233CD078F50(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002C90358FD50(5,15-38): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.fxc.hlsl
index efeda15..bf18753 100644
--- a/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupMul_fab258()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupMul_fab258()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026A1C714740(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000002F0B5CA99D0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl
index 70fbdb1..f15ce14 100644
--- a/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupMul/fab258.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024AC5428F20(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
+C:\src\dawn\Shader@0x000001EA948046C0(5,14-37): error X3004: undeclared identifier 'WaveActiveProduct'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.fxc.hlsl
index 79c3767..2a3477d 100644
--- a/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupOr_03343f()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupOr_03343f()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F388990A60(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001DF18C79B00(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl
index ae4e4a6..8c92ff5 100644
--- a/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/03343f.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026C20409070(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000002A12029BBC0(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.fxc.hlsl
index dd10697..9c376e1 100644
--- a/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupOr_0bc264()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupOr_0bc264()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000276B3B416D0(5,14-35): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000298AC36D9D0(5,14-35): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl
index 7eaeffb..409c6fc 100644
--- a/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/0bc264.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000010AC5B3CA00(5,14-35): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001CCA107A000(5,14-35): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl
index c0f5732..5528380 100644
--- a/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupOr_3f60e0()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupOr_3f60e0()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000163904B6B50(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000024ECF5A4CE0(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl
index 1c5fe8e..3ec0643 100644
--- a/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/3f60e0.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017C61388F30(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001D872B7BE40(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl
index 6c7c446..073517c 100644
--- a/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupOr_4d4eb0()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupOr_4d4eb0()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017424300340(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001417B354AD0(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl
index 51112c0..c7ed9af 100644
--- a/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/4d4eb0.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019729B49070(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000180836EB000(5,20-49): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.fxc.hlsl
index 53d269f..fda650b 100644
--- a/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupOr_663a21()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupOr_663a21()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021C1887D010(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001B1474174D0(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl
index a178139..b57f535 100644
--- a/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/663a21.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002058257ED10(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000200EFC8B540(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl
index dbe2566..61204ad 100644
--- a/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupOr_aa74f7()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupOr_aa74f7()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000245F48D0340(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000207020D6EE0(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl
index dd45895..57e240e 100644
--- a/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/aa74f7.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027E8CBA8F30(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000019BD9BD4690(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl
index 8e9b1f5..da39ef8 100644
--- a/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupOr_ae58b6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupOr_ae58b6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000198A2958DD0(5,19-48): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x0000027AB88B69F0(5,19-48): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl
index 3c88eee..7e0d6b1 100644
--- a/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/ae58b6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D7AF889310(5,19-48): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001FD342CAF40(5,19-48): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.fxc.hlsl
index 48b081a..a23efb7 100644
--- a/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupOr_f915e3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupOr_f915e3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CF09C586C0(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x000001FCE32A6030(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl
index 6139dbe..1c12f6e 100644
--- a/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupOr/f915e3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000295D52A30B0(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
+C:\src\dawn\Shader@0x00000180B3740C50(5,15-36): error X3004: undeclared identifier 'WaveActiveBitOr'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.fxc.hlsl
index 66e0f70..039c9d8 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_030422()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F7BC25A470(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl
index 9d6d49e..cacd5ca 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/030422.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B930899340(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000227CF71D540(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl
index bfaef34..37ec96f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_1f664c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F9BBACDF40(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl
index 0c3acc2..a8981ee 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/1f664c.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FAC897F210(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001BAC8D28A90(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl
index 3b0cfa3..7538650 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_21f083()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CB9BFD4AF0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl
index 02e9559..0dcf39a 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/21f083.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002322CF0D710(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000029061AEFDB0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl
index bc46adb..16dfda8 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_2ee993()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021040709DD0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl
index df7212d..e1c7f0d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/2ee993.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027C563AAF00(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000029AF646C250(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.fxc.hlsl
index 83111a8..f673d6b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_323416()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000283DD274AF0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl
index 775000a..df2da4a 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/323416.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019DE44B12E0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000213832D5C20(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl
index 3f98e9b..02436a1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_4752bd()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000229DAD86B80(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl
index fa5dc88..4c66f52 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/4752bd.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D67C491D0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002668F68FC20(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl
index 3eb9cb4..a496c90 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_4cbb69()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B08E1CFDA0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl
index c269110..c92b1f2 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/4cbb69.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002250DA8EF50(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000261FB407E30(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl
index 5598911..01baa2d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_4f5711()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F9DC5BFDE0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl
index 64d3878..88d8412 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/4f5711.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002590BD7F4C0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001D15CC25190(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl
index 98f81d8..8617191 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_54f328()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000130891A5260(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl
index dca5391..e2ccdb1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/54f328.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002857D1A0510(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000002581DCCF890(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl
index 2781c49..f88c948 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_5dfeab()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C1062A60F0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl
index 75f1bb1..712560e 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/5dfeab.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000221FFD7D710(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000203FF04B850(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl
index 6f9021b..66caa6e 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_5ef5a2()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021BB8440780(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl
index a6ceee6..50a637f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/5ef5a2.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A965718EB0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000029E7C455320(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.fxc.hlsl
index e38dcd2..93a3777 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffle_647034());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A339A4FC40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl
index fbbe4bb..d7d8a5d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/647034.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B895F116B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AD196438C0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl
index e2f7fac..079066f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffle_7ba2d5());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029019940A70(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl
index 89ce1fe..d549aba 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/7ba2d5.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025978B1F9A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027607A361E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl
index 6e279be..5770281 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_7c5d64()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B6CF5F2890(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl
index 1f31653..342c550 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/7c5d64.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024F5846FFD0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001C427F9BE30(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl
index de4ee80..59f0a57 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffle_7d7b1e());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019646CC82B0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl
index cc3eb50..7f615bb 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/7d7b1e.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B9D90CFEF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017B1C05AFF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl
index b2ecb65..502aa9d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffle_821df9());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012439A528E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl
index e0e5654..78fa3ea 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/821df9.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001816C6DF340(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B3857261E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.fxc.hlsl
index 9b1ac5e..28415a2 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_824702()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EB71B71000(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl
index 06a59ef..8406cc2 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/824702.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000169C09C8EF0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001A8F4B50ED0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl
index 0d76e0b..3cff18f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_84f261()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000223234CD690(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl
index 0a258e7..1748526 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/84f261.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025F343812E0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000012F3FED6500(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl
index 6908103..d097c9d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_85587b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A5E238F9C0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl
index a1012ce..912bcf7 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/85587b.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024D450444A0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000023685E673D0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl
index c19632d..5be1454 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_8890a5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E2E8124720(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl
index 6dbc3dd..d4146da 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/8890a5.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C4ED509A50(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000021730937430(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl
index 036c93b..94f4a9e 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_8bfbcd()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017609FB9C20(6,13-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl
index dde8197..93850b9 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/8bfbcd.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EA64549210(6,13-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000025E7C09DF40(6,13-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl
index 7fc8472..7aed0ad 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffle_8c3fd2());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BFAD0770A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl
index 6eaae94..8634980 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/8c3fd2.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015FC5730360(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025E76C9C6F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl
index bfcf170..8db3e92 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffle_aa1d5c());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EC0BC4FC40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl
index f9fd2f2..dc9d9a7 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/aa1d5c.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002414D039200(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D60BFB68A0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl
index 7007ec5..4e02078 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffle_b0f28d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B697514710(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl
index 5ce414b..bb4a832 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/b0f28d.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000214002A35F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002EAB04361E0(3,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl
index 6efe133..57bab52 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffle_b4bbb7()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020538528DF0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl
index 437471f..a7aab8e 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/b4bbb7.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C9B789F320(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000016DC19EBDD0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl
index f18a523..6ef4103 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_bbb06c()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015AFB08F840(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl
index 513ba47..cef548d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/bbb06c.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000209A9DE9350(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000295E288B6A0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl
index db6cbfe..435e020 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_d4a772()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016008130260(6,13-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl
index 9946b01..f13b651 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/d4a772.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002473A111470(6,13-40): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x0000025A965546C0(6,13-40): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl
index ab4713c..3f51dc3 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffle_d9ff67()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024204F89C50(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl
index 02b0872..7c4f9f8 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/d9ff67.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001297CD212E0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001AC4A21B6A0(6,16-43): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl
index 42b4674..8db63ac 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_e13c81()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A6DCCC5660(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl
index 0d820cf..b0e3bfa 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/e13c81.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000230444612A0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000205118AFAA0(6,15-42): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl
index 592fb89..803415d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffle_e854d5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002464A1FB660(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl
index cadedef..6d06baa 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/e854d5.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE9F41A0A0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x000001BFB60CFAA0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl
index a9ba912..f08b9e4 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffle_f194f5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017540A45ED0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl
index 37c831e..c6a1b97 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/f194f5.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015C304C9340(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
+C:\src\dawn\Shader@0x00000223EFCB59D0(6,14-41): error X3004: undeclared identifier 'WaveReadLaneAt'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl
index 9225ead..a05fa70 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffle_fb4ab9());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AF06DCD3F0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl
index 3331d80..1e85269 100644
--- a/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffle/fb4ab9.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EC72EAE5B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000216812FD3E0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl
index 4540de5..8ac9775 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleDown_10eb45());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E99437FEA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl
index deacce5..7c16778 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/10eb45.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleDown_10eb45());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B46D496680(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl
index eaaaf04..18dbc44 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_1b530f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D59113B9A0(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl
index 97ac3c7..88f9a9b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/1b530f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_1b530f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000141E4AE4800(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl
index c3c1246..961c588 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_257ff0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002657675FB70(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl
index d6ee63b..6b9fb27 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/257ff0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_257ff0()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000225895B4000(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl
index c79d637..b64b8d0 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_313d9b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F622D4BED0(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl
index b2a70a3..83f15bc 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/313d9b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_313d9b()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001617B41BC40(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl
index fc77414..099720c 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleDown_57b1e8());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002172343BD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl
index bbfb17b..c2f203a 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/57b1e8.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleDown_57b1e8());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DE03014FD0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl
index 7511a35..9ac54df 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_5d8b9f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002419D8F02B0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl
index 1861fe3..6b290b6 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/5d8b9f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_5d8b9f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021D9B578CE0(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl
index 0fd4233..ee2d84d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleDown_63fdb0());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029C7D1CFC60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl
index 583d3b7..ba174ee 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/63fdb0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleDown_63fdb0());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C625E54FA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl
index 471b011..018cd1f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleDown_642789()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F11F4BBC70(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl
index fb39605..71c3a05 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/642789.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, subgroupShuffleDown_642789());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9AB628CE0(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl
index 66676ec..531c59a 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_7a0cf5()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F5D6D940F0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl
index 6c7010a..d8306cf 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/7a0cf5.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_7a0cf5()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EBA51D5110(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl
index b7b6adc..b0eff109 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_7f8886()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022DDB8246B0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl
index c19db9d..755c6a2 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/7f8886.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_7f8886()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023670EDFDB0(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl
index e0088d1..38ed8b9 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleDown_9c6714());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CBAD3CFBE0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl
index 4cc67ea..e9a632f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/9c6714.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleDown_9c6714());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000203A2AFB9F0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl
index 97749e6..6e5c02c 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_b41899()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F4CDD402B0(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl
index 0f84db7..28f309f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/b41899.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_b41899()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001794F1D6050(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl
index 344ac81..ee7a83b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleDown_c9f1c4()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B159E46730(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl
index bd502fe..d47445e 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/c9f1c4.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, subgroupShuffleDown_c9f1c4());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024F97305C40(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl
index 9387ec5..3a66f66 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_d269eb()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019D9F79BBD0(6,36-53): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl
index 079e8d1..87ce910 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/d269eb.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_d269eb()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C85FDFB60(8,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl
index 37f9fda..febc093 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleDown_d46304()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000284552640B0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl
index e7178e7..0cb5756 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/d46304.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, subgroupShuffleDown_d46304());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019FA60B4C90(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl
index dfb387b..56fb247 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleDown_d90c2f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D8E29660F0(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl
index 9432a22..52c8a91 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleDown/d90c2f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, subgroupShuffleDown_d90c2f());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001794C685C40(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl
index 179928f..1fe5258 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleUp_0990cd());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019B8DFF2760(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl
index ba6cc92..da27d41 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/0990cd.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleUp_0990cd());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B24948E0B0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl
index 2fb7b88..0cd62c9 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_1bb93f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000221542D5230(6,36-53): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl
index e0542aa..b93a0b1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/1bb93f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_1bb93f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016DF5A846C0(8,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl
index 9393283..5ebf5d1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_23c7ca()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000248690C60F0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl
index 5c606d4..959f4f5 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/23c7ca.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_23c7ca()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027272D24620(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl
index 3e53dee..368d86a 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleUp_3242a6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002459FD05090(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl
index 6639655..8db3959 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/3242a6.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, subgroupShuffleUp_3242a6());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AC3EA5F6E0(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl
index a7dbc61..e9cc8f5 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_33d495()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BC83FB56A0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl
index e5c3cea..18014c7 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/33d495.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_33d495()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000193DF38B910(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl
index 23475b2..1118d2f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_3e609f()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020A3197B660(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl
index c5b8190..fca976d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/3e609f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_3e609f()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C01A080850(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl
index dc106bf..4e968b1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_58de69()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002490FFF0E40(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl
index cf0f346..f29f1d1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/58de69.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, subgroupShuffleUp_58de69());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002693B21B8B0(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl
index f6104af..b8dd290 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleUp_868e52());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000276F7694E60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl
index 9a8707d..6364550 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/868e52.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleUp_868e52());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022F3934BE50(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl
index 4f60426..9d20540 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_87c9d6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EB479556C0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl
index d411650..2820e24 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/87c9d6.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_87c9d6()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DF6BD40680(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl
index cb65cbc..b714e57 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleUp_88eb07()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026CD0BABE80(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl
index 4daf379..f1dcaf1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/88eb07.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, subgroupShuffleUp_88eb07());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000144F3A65EB0(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl
index f9d22db..a955142 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_8a63f3()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B3C609CA10(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl
index cd034dc..01766fe 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/8a63f3.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_8a63f3()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002037C3E3F20(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl
index e84e11a..6c74a82 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleUp_a2075a());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014AFC684E60(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl
index 60aefa7..d11eff1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/a2075a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleUp_a2075a());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000258959468D0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl
index 19f8154..1d79a02 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleUp_abaea0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D30BA9AF80(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl
index de93727..69d4cd1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/abaea0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, subgroupShuffleUp_abaea0());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B9A0F96070(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl
index 1bf547d..3727497 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_b58804()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D9D919F7A0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl
index 87b55a7..951420f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/b58804.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_b58804()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017D2D4F5450(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl
index 93a1646..94e841b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleUp_bbf7f4());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016E17620180(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl
index 79d2663..7cf3cf3 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/bbf7f4.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleUp_bbf7f4());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C5DB3B0BC0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl
index 3ced509..4711a2c 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_db5bcb()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D433585090(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl
index ce1593e..c4854d4 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleUp/db5bcb.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleUp_db5bcb()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025033D15600(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl
index 021bb40..b90f8dc 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_071aa0()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001839C5402B0(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl
index f7b3685..a1ef241 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/071aa0.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_071aa0()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018A844CF9D0(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl
index 0e60ee2..3297e18 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_08f588()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C64FEC02B0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl
index cb7e26b..f432626 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/08f588.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, subgroupShuffleXor_08f588());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000144791EB500(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl
index 260e6ea..0ab94be 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_1d36b6()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D426A54BF0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl
index 3189c03..3329891 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/1d36b6.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_1d36b6()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D1548BC250(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl
index fb36279..4e2021b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleXor_1e247f());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000218F13CD220(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl
index 309cb4d..bae0ad1 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/1e247f.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 2> >(0u, subgroupShuffleXor_1e247f());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002855A816680(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl
index 5de7e78..683d499 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleXor_1f2590());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000203A466FC40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl
index f9be9f7..17f593c 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/1f2590.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 3> >(0u, subgroupShuffleXor_1f2590());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EFC05EFD80(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl
index e568860..040920d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleXor_2e033d());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024B89E64E40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl
index d148eff..6bf77bc 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/2e033d.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<vector<float16_t, 4> >(0u, subgroupShuffleXor_2e033d());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F3BA5B4FA0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl
index 0bafc61..3b1e262 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_445e83()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BEF1C860F0(6,36-53): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl
index fd11aac..d36ae14 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/445e83.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_445e83()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002085FDB8CE0(8,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl
index d09269d..ee34307 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_7435fe()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B79263BC70(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl
index bfb42f2..168d4a5 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/7435fe.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_7435fe()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024C685AFDB0(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl
index 1130e19..e41d34f 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store(0u, asuint(subgroupShuffleXor_80b6e9()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A9E9D96310(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl
index c98ce5d..e62e219 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/80b6e9.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store(0u, subgroupShuffleXor_80b6e9());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D6AEB246C0(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl
index abd39f0..daa503d 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_9f945a()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002388A7A95B0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl
index 1adf2d4..fa20d00 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/9f945a.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, subgroupShuffleXor_9f945a());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000197D951FFF0(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl
index bbe0339..0825496 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_bdddba()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000015EBF8C3F20(6,37-54): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl
index 6740408..1be6c8b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/bdddba.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_bdddba()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F9BB025C40(8,33-50): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl
index addb1a3..5250b40 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_c88290()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000227F383D2D0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl
index 8e52073..9e0def0 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/c88290.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store4(0u, asuint(subgroupShuffleXor_c88290()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000263701D4080(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl
index 10bc1d8..5351abee 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_caa816()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CE9CD240B0(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl
index b3118ff..8cb886b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/caa816.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store3(0u, asuint(subgroupShuffleXor_caa816()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x00000215187E4080(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl
index 693da08..fc399a0 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleXor_d224ab());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A3BF77E150(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl
index 64adc30..f2c9e35 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/d224ab.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store<float16_t>(0u, subgroupShuffleXor_d224ab());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022EA6364F00(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl
index bf55af8..340b309 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_e3c10b()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016B7E9D02B0(6,38-55): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl
index 92a0c1a..f8bcb1e 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/e3c10b.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, subgroupShuffleXor_e3c10b());
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000002314EDEB500(8,34-51): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl
index 9a27178..3cddffb 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 RWByteAddressBuffer prevent_dce : register(u0);
 
@@ -19,3 +19,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_f7b453()));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BC7EEF3F30(6,39-56): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl
index 6a8b230..d8a692b 100644
--- a/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupShuffleXor/f7b453.wgsl.expected.ir.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: Wave ops not supported before SM 6.0
+SKIP: FAILED
 
 
 RWByteAddressBuffer prevent_dce : register(u0);
@@ -20,3 +20,6 @@
   prevent_dce.Store2(0u, asuint(subgroupShuffleXor_f7b453()));
 }
 
+FXC validation failure:
+C:\src\dawn\Shader@0x000001937818B500(8,35-52): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.fxc.hlsl
index 99d7e76..7657c9b 100644
--- a/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupXor_468721()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupXor_468721()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025503FCA700(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001CC7C2201D0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl
index 0cbc13d..d6d412a 100644
--- a/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/468721.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002888242EF30(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000023ACCF07F60(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.fxc.hlsl
index a708681..3011691 100644
--- a/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupXor_473de8()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupXor_473de8()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023FB7462020(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000016E77C2CC30(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl
index b52cd9c..c52a765 100644
--- a/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/473de8.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA757A9550(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000021686D046A0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.fxc.hlsl
index 10da165..09cf08f 100644
--- a/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupXor_694b17()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupXor_694b17()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000202AF560C30(5,19-49): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x00000132DFFFF0A0(5,19-49): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl
index 4353f82..ca02899 100644
--- a/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/694b17.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FB953CCA00(5,19-49): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001CE4BE485E0(5,19-49): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.fxc.hlsl
index 58de8d5..16dbe06 100644
--- a/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store(0u, asuint(subgroupXor_7750d6()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store(0u, asuint(subgroupXor_7750d6()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C9D4871C0(5,14-36): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000016F2A5F53C0(5,14-36): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl
index 71dfc41..afc0d37 100644
--- a/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/7750d6.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016065DE9D80(5,14-36): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001FD72EFFF50(5,14-36): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.fxc.hlsl
index 1127739..6c0e24c 100644
--- a/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store2(0u, asuint(subgroupXor_7f6672()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store2(0u, asuint(subgroupXor_7f6672()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CCB8D07A70(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000024659D37020(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl
index 5cc2099..e6ee731 100644
--- a/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/7f6672.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C479D2CA00(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x00000277E5BFA0A0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl
index c995385..529ca9d 100644
--- a/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupXor_83b1f3()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupXor_83b1f3()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025DA8D81EB0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001B4756D4E90(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl
index 4de4e4e..0c246d9 100644
--- a/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/83b1f3.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026AA8139140(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000019503FD46E0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl
index b339ce8..ee85c4f 100644
--- a/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store3(0u, asuint(subgroupXor_9c6e73()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store3(0u, asuint(subgroupXor_9c6e73()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026409513030(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000023F42699B60(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl
index bc526f1..ebd4a68 100644
--- a/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/9c6e73.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000296647197F0(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001D5345D4690(5,20-50): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl
index 35ab082..32d6f9e 100644
--- a/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.fxc.hlsl
@@ -8,11 +8,16 @@
   return res;
 }
 
+void fragment_main() {
+  prevent_dce.Store4(0u, asuint(subgroupXor_9d77e4()));
+  return;
+}
+
 [numthreads(1, 1, 1)]
 void compute_main() {
   prevent_dce.Store4(0u, asuint(subgroupXor_9d77e4()));
   return;
 }
 FXC validation failure:
-C:\src\dawn\Shader@0x00000218D8F23750(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x000001FA5C5B7BD0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl
index 849f7e1..19a56a9 100644
--- a/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/subgroupXor/9d77e4.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000199EE28EED0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
+C:\src\dawn\Shader@0x0000022169D6BBC0(5,15-37): error X3004: undeclared identifier 'WaveActiveBitXor'
 
diff --git a/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.fxc.hlsl
index 5e664c4..b6c706f 100644
--- a/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_539e54() {
+vector<float16_t, 4> tan_539e54() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = tan(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_539e54();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_539e54();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tan_539e54());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_539e54();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tan_539e54());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_539e54();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025276568540(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.fxc.hlsl
index a0eee36..110df29 100644
--- a/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001837691F240(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E075156630(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.fxc.hlsl
index 68c0998..2791808 100644
--- a/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_9f7c9c() {
+vector<float16_t, 2> tan_9f7c9c() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = tan(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_9f7c9c();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_9f7c9c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tan_9f7c9c());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_9f7c9c();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tan_9f7c9c());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_9f7c9c();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000233CD268380(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl
index c4028dd..bf77b60 100644
--- a/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D6F06EED00(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E6D0B85470(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.fxc.hlsl
index d16807c..aacdfc8 100644
--- a/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_d4d491() {
+float16_t tan_d4d491() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = tan(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_d4d491();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_d4d491();
+  prevent_dce.Store<float16_t>(0u, tan_d4d491());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_d4d491();
+  prevent_dce.Store<float16_t>(0u, tan_d4d491());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_d4d491();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E8BE759F90(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.fxc.hlsl
index 17f760f..942a478 100644
--- a/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000269CD96F940(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000228C8778F70(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.fxc.hlsl
index 433d86f..cdce68d 100644
--- a/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tan_db0456() {
+vector<float16_t, 3> tan_db0456() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = tan(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tan_db0456();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tan_db0456();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tan_db0456());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tan_db0456();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tan_db0456());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tan_db0456();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AE9295C840(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.fxc.hlsl
index 983a3f3..2671ccc 100644
--- a/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002AF2BEF5050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021DA7658BF0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.fxc.hlsl
index e59caaf..d9dceac 100644
--- a/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_06a4fe() {
+vector<float16_t, 3> tanh_06a4fe() {
   vector<float16_t, 3> arg_0 = (float16_t(1.0h)).xxx;
   vector<float16_t, 3> res = tanh(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_06a4fe();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_06a4fe();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tanh_06a4fe());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_06a4fe();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, tanh_06a4fe());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_06a4fe();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A92C355750(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl
index 04e32fc..a866a57 100644
--- a/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D25E055050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F1EFF25970(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.fxc.hlsl
index 5954aef..557fbee 100644
--- a/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_5b19af() {
+float16_t tanh_5b19af() {
   float16_t arg_0 = float16_t(1.0h);
   float16_t res = tanh(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_5b19af();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_5b19af();
+  prevent_dce.Store<float16_t>(0u, tanh_5b19af());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_5b19af();
+  prevent_dce.Store<float16_t>(0u, tanh_5b19af());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_5b19af();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000160E2362CF0(3,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.fxc.hlsl
index a372673..1c4ef7a 100644
--- a/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BA583512C0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001AB5AD48F70(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.fxc.hlsl
index 066d402..b281c16 100644
--- a/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_6d105a() {
+vector<float16_t, 2> tanh_6d105a() {
   vector<float16_t, 2> arg_0 = (float16_t(1.0h)).xx;
   vector<float16_t, 2> res = tanh(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_6d105a();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_6d105a();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tanh_6d105a());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_6d105a();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, tanh_6d105a());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_6d105a();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001749CE35DF0(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.fxc.hlsl
index f31a885..43015f9 100644
--- a/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CD667164C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014B5ED88500(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.fxc.hlsl
index e82e88b..69bf4f4 100644
--- a/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.fxc.hlsl
@@ -1,36 +1,47 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void tanh_e8efb3() {
+vector<float16_t, 4> tanh_e8efb3() {
   vector<float16_t, 4> arg_0 = (float16_t(1.0h)).xxxx;
   vector<float16_t, 4> res = tanh(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  tanh_e8efb3();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return res;
 }
 
 void fragment_main() {
-  tanh_e8efb3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tanh_e8efb3());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  tanh_e8efb3();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, tanh_e8efb3());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = tanh_e8efb3();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002529D7FDF40(3,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl
index 0e1f17f..21c4081 100644
--- a/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A4B259FD50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020F83095230(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/0dff6c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/17e988.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/193203.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/2149ec.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl
index 58230f6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSample/85c4ba.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
index 08f1b43..91b51fe 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.ir.fxc.hlsl
@@ -176,6 +176,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D7375AF640(55,137-143): error X3000: syntax error: unexpected token 'sampler'
-C:\src\dawn\Shader@0x000001D7375AF640(56,27-32): error X3004: undeclared identifier 'coords'
+C:\src\dawn\Shader@0x0000011C881F5890(55,137-143): error X3000: syntax error: unexpected token 'sampler'
+C:\src\dawn\Shader@0x0000011C881F5890(56,27-32): error X3004: undeclared identifier 'coords'
 
diff --git a/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/594824.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/87915c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/9dbb51.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl
index 49d2f50..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/a161cf.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleBias
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl
index b7acf20..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompare
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl
index b7acf20..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompare
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl
index b7acf20..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/dec064.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompare
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl
index f8e283a..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/7f2b9a.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompareLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl
index f8e283a..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompareLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl
index f8e283a..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleCompareLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/5884dd.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/7cd6de.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d4e3c5.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl
index 2729ab6..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/d65515.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleGrad
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0b0a1b.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/749baf.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/b7c55c.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/dcbecb.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/f3b2c8.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl
index cf26da3..b8b88c6 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/faa6d7.wgsl.expected.ir.dxc.hlsl
@@ -1,9 +1,3 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+exit status 0xe0000001
\ No newline at end of file
diff --git a/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.fxc.hlsl
index 2f4fdde..122c185 100644
--- a/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.fxc.hlsl
@@ -1,42 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 3, 3> value) {
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
-}
-
-void transpose_06794e() {
+int transpose_06794e() {
   matrix<float16_t, 3, 3> arg_0 = matrix<float16_t, 3, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
   matrix<float16_t, 3, 3> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_06794e();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_06794e();
+  prevent_dce.Store(0u, asuint(transpose_06794e()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_06794e();
+  prevent_dce.Store(0u, asuint(transpose_06794e()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_06794e();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EEB6D657A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EEB6D657A0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EEB6D657A0(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.fxc.hlsl
index 927d169..d8e921b 100644
--- a/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/06794e.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BA07A6EBC0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002BA07A6EBC0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002BA07A6EBC0(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000001E3279897F0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E3279897F0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E3279897F0(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.fxc.hlsl
index 0b9b8b8..b4b5383 100644
--- a/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.fxc.hlsl
@@ -1,41 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 2, 4> value) {
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
-}
-
-void transpose_5edd96() {
+int transpose_5edd96() {
   matrix<float16_t, 4, 2> arg_0 = matrix<float16_t, 4, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
   matrix<float16_t, 2, 4> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_5edd96();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_5edd96();
+  prevent_dce.Store(0u, asuint(transpose_5edd96()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_5edd96();
+  prevent_dce.Store(0u, asuint(transpose_5edd96()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_5edd96();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000189ABF36650(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000189ABF36650(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000189ABF36650(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.fxc.hlsl
index 287d947..b338b14 100644
--- a/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/5edd96.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A864FEEA80(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002A864FEEA80(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002A864FEEA80(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000001CE32F841D0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CE32F841D0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CE32F841D0(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.fxc.hlsl
index 49f0186..a54e0c2 100644
--- a/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.fxc.hlsl
@@ -1,42 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 3, 4> value) {
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
-}
-
-void transpose_5f36bf() {
+int transpose_5f36bf() {
   matrix<float16_t, 4, 3> arg_0 = matrix<float16_t, 4, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
   matrix<float16_t, 3, 4> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_5f36bf();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_5f36bf();
+  prevent_dce.Store(0u, asuint(transpose_5f36bf()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_5f36bf();
+  prevent_dce.Store(0u, asuint(transpose_5f36bf()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_5f36bf();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022E04964710(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022E04964710(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022E04964710(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl
index d8f499b..c8880d4 100644
--- a/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/5f36bf.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021A8AC40030(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000021A8AC40030(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000021A8AC40030(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000001B91C1D4130(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B91C1D4130(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B91C1D4130(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.fxc.hlsl
index 4dcea8f..6939175 100644
--- a/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.fxc.hlsl
@@ -1,41 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 2, 2> value) {
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
-}
-
-void transpose_7be8b2() {
+int transpose_7be8b2() {
   matrix<float16_t, 2, 2> arg_0 = matrix<float16_t, 2, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
   matrix<float16_t, 2, 2> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_7be8b2();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_7be8b2();
+  prevent_dce.Store(0u, asuint(transpose_7be8b2()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_7be8b2();
+  prevent_dce.Store(0u, asuint(transpose_7be8b2()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_7be8b2();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000279010DD290(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000279010DD290(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000279010DD290(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl
index ebf9d2f..5938fe3 100644
--- a/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/7be8b2.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026A91FBF190(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026A91FBF190(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026A91FBF190(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x00000216C0C26490(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000216C0C26490(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000216C0C26490(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.fxc.hlsl
index c5a3b3b..b573451 100644
--- a/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.fxc.hlsl
@@ -1,43 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 4, 4> value) {
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
-  prevent_dce.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
-}
-
-void transpose_844869() {
+int transpose_844869() {
   matrix<float16_t, 4, 4> arg_0 = matrix<float16_t, 4, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
   matrix<float16_t, 4, 4> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_844869();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_844869();
+  prevent_dce.Store(0u, asuint(transpose_844869()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_844869();
+  prevent_dce.Store(0u, asuint(transpose_844869()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_844869();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000146AF16DEE0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000146AF16DEE0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000146AF16DEE0(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.fxc.hlsl
index e7c3221..e16c720 100644
--- a/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/844869.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000162B4DBE2B0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000162B4DBE2B0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000162B4DBE2B0(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000002787BA75150(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002787BA75150(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002787BA75150(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.fxc.hlsl
index a3ac992..e8cb887 100644
--- a/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.fxc.hlsl
@@ -1,43 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 4, 3> value) {
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
-}
-
-void transpose_8c06ce() {
+int transpose_8c06ce() {
   matrix<float16_t, 3, 4> arg_0 = matrix<float16_t, 3, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
   matrix<float16_t, 4, 3> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_8c06ce();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_8c06ce();
+  prevent_dce.Store(0u, asuint(transpose_8c06ce()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_8c06ce();
+  prevent_dce.Store(0u, asuint(transpose_8c06ce()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_8c06ce();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E241234710(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E241234710(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E241234710(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl
index ff41617..d3f424a 100644
--- a/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/8c06ce.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000262203AE0F0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000262203AE0F0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000262203AE0F0(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x000001D216E09250(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D216E09250(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D216E09250(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.fxc.hlsl
index 7eb271f..e8240bf 100644
--- a/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.fxc.hlsl
@@ -1,41 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 2, 3> value) {
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
-}
-
-void transpose_b9ad1f() {
+int transpose_b9ad1f() {
   matrix<float16_t, 3, 2> arg_0 = matrix<float16_t, 3, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
   matrix<float16_t, 2, 3> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_b9ad1f();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_b9ad1f();
+  prevent_dce.Store(0u, asuint(transpose_b9ad1f()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_b9ad1f();
+  prevent_dce.Store(0u, asuint(transpose_b9ad1f()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_b9ad1f();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000222C6CD6640(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000222C6CD6640(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000222C6CD6640(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl
index ba67e0c..b856a4f 100644
--- a/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/b9ad1f.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D7E31C65C0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001D7E31C65C0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001D7E31C65C0(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000022FC69E68A0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022FC69E68A0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022FC69E68A0(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.fxc.hlsl
index d60cde2..c26aaee 100644
--- a/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.fxc.hlsl
@@ -1,42 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 3, 2> value) {
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
-}
-
-void transpose_d6faec() {
+int transpose_d6faec() {
   matrix<float16_t, 2, 3> arg_0 = matrix<float16_t, 2, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
   matrix<float16_t, 3, 2> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_d6faec();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_d6faec();
+  prevent_dce.Store(0u, asuint(transpose_d6faec()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_d6faec();
+  prevent_dce.Store(0u, asuint(transpose_d6faec()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_d6faec();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002960D005790(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002960D005790(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002960D005790(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.fxc.hlsl
index 036fa97..36e674c 100644
--- a/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/d6faec.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022BF14504A0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000022BF14504A0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000022BF14504A0(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x0000018BDF5F52C0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018BDF5F52C0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018BDF5F52C0(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.fxc.hlsl
index bc40fc3..40d9b86 100644
--- a/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.fxc.hlsl
@@ -1,43 +1,49 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void prevent_dce_store(uint offset, matrix<float16_t, 4, 2> value) {
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
-  prevent_dce.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
-}
-
-void transpose_faeb05() {
+int transpose_faeb05() {
   matrix<float16_t, 2, 4> arg_0 = matrix<float16_t, 2, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
   matrix<float16_t, 4, 2> res = transpose(arg_0);
-  prevent_dce_store(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  transpose_faeb05();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  return ((res[0][0] == float16_t(0.0h)) ? 1 : 0);
 }
 
 void fragment_main() {
-  transpose_faeb05();
+  prevent_dce.Store(0u, asuint(transpose_faeb05()));
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  transpose_faeb05();
+  prevent_dce.Store(0u, asuint(transpose_faeb05()));
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  int prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation int prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = transpose_faeb05();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F802F5E050(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F802F5E050(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F802F5E050(6,12-14): error X3004: undeclared identifier 'res'
+
diff --git a/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.fxc.hlsl
index 8302913..91e7d9a 100644
--- a/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/transpose/faeb05.wgsl.expected.ir.fxc.hlsl
@@ -44,7 +44,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001784198EBD0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001784198EBD0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001784198EBD0(16,13-15): error X3004: undeclared identifier 'res'
+C:\src\dawn\Shader@0x00000267F5A952D0(14,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000267F5A952D0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000267F5A952D0(16,13-15): error X3004: undeclared identifier 'res'
 
diff --git a/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.fxc.hlsl
index a27423e..bb34ef4 100644
--- a/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.fxc.hlsl
@@ -1,36 +1,51 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
 
-void trunc_103ab8() {
+RWByteAddressBuffer prevent_dce : register(u0);
+
+vector<float16_t, 3> trunc_103ab8() {
   vector<float16_t, 3> arg_0 = (float16_t(1.5h)).xxx;
-  vector<float16_t, 3> res = trunc(arg_0);
-  prevent_dce.Store<vector<float16_t, 3> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_103ab8();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  vector<float16_t, 3> res = tint_trunc(arg_0);
+  return res;
 }
 
 void fragment_main() {
-  trunc_103ab8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, trunc_103ab8());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_103ab8();
+  prevent_dce.Store<vector<float16_t, 3> >(0u, trunc_103ab8());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 3> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 3> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_103ab8();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AD5A160390(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.fxc.hlsl
index d787319..f0fd2c7 100644
--- a/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001629C1CE6F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B3E9CDA960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.fxc.hlsl
index ef6431e..1b8e41e 100644
--- a/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.fxc.hlsl
@@ -1,36 +1,51 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+vector<float16_t, 2> tint_trunc(vector<float16_t, 2> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
 
-void trunc_a56109() {
+RWByteAddressBuffer prevent_dce : register(u0);
+
+vector<float16_t, 2> trunc_a56109() {
   vector<float16_t, 2> arg_0 = (float16_t(1.5h)).xx;
-  vector<float16_t, 2> res = trunc(arg_0);
-  prevent_dce.Store<vector<float16_t, 2> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_a56109();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  vector<float16_t, 2> res = tint_trunc(arg_0);
+  return res;
 }
 
 void fragment_main() {
-  trunc_a56109();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, trunc_a56109());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_a56109();
+  prevent_dce.Store<vector<float16_t, 2> >(0u, trunc_a56109());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 2> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 2> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_a56109();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C0973AD2B0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.fxc.hlsl
index 6b48a5d..8ecc683 100644
--- a/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020E373854D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BB380A6600(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.fxc.hlsl
index 9d3687b..4aa59a4 100644
--- a/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.fxc.hlsl
@@ -1,36 +1,51 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+float16_t tint_trunc(float16_t param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
 
-void trunc_cc2b0d() {
+RWByteAddressBuffer prevent_dce : register(u0);
+
+float16_t trunc_cc2b0d() {
   float16_t arg_0 = float16_t(1.5h);
-  float16_t res = trunc(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_cc2b0d();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  float16_t res = tint_trunc(arg_0);
+  return res;
 }
 
 void fragment_main() {
-  trunc_cc2b0d();
+  prevent_dce.Store<float16_t>(0u, trunc_cc2b0d());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_cc2b0d();
+  prevent_dce.Store<float16_t>(0u, trunc_cc2b0d());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  float16_t prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation float16_t prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_cc2b0d();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB57F0FE30(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl
index 8f3d897..6e1d3f8 100644
--- a/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000175C9485020(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022619057F80(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.fxc.hlsl
index 98b431b..4f1da05 100644
--- a/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.fxc.hlsl
@@ -1,36 +1,51 @@
 SKIP: FAILED
 
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+vector<float16_t, 4> tint_trunc(vector<float16_t, 4> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
 
-void trunc_ce7c17() {
+RWByteAddressBuffer prevent_dce : register(u0);
+
+vector<float16_t, 4> trunc_ce7c17() {
   vector<float16_t, 4> arg_0 = (float16_t(1.5h)).xxxx;
-  vector<float16_t, 4> res = trunc(arg_0);
-  prevent_dce.Store<vector<float16_t, 4> >(0u, res);
-}
-
-struct tint_symbol {
-  float4 value : SV_Position;
-};
-
-float4 vertex_main_inner() {
-  trunc_ce7c17();
-  return (0.0f).xxxx;
-}
-
-tint_symbol vertex_main() {
-  const float4 inner_result = vertex_main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.value = inner_result;
-  return wrapper_result;
+  vector<float16_t, 4> res = tint_trunc(arg_0);
+  return res;
 }
 
 void fragment_main() {
-  trunc_ce7c17();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, trunc_ce7c17());
   return;
 }
 
 [numthreads(1, 1, 1)]
 void compute_main() {
-  trunc_ce7c17();
+  prevent_dce.Store<vector<float16_t, 4> >(0u, trunc_ce7c17());
   return;
 }
+
+struct VertexOutput {
+  float4 pos;
+  vector<float16_t, 4> prevent_dce;
+};
+struct tint_symbol_1 {
+  nointerpolation vector<float16_t, 4> prevent_dce : TEXCOORD0;
+  float4 pos : SV_Position;
+};
+
+VertexOutput vertex_main_inner() {
+  VertexOutput tint_symbol = (VertexOutput)0;
+  tint_symbol.pos = (0.0f).xxxx;
+  tint_symbol.prevent_dce = trunc_ce7c17();
+  return tint_symbol;
+}
+
+tint_symbol_1 vertex_main() {
+  VertexOutput inner_result = vertex_main_inner();
+  tint_symbol_1 wrapper_result = (tint_symbol_1)0;
+  wrapper_result.pos = inner_result.pos;
+  wrapper_result.prevent_dce = inner_result.prevent_dce;
+  return wrapper_result;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000211E28A5870(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl
index 3eebec9..95a7549 100644
--- a/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000195E334F1D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014CF57C4D20(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl
index 9fe9c3e..c85babe 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.fxc.hlsl
@@ -1,18 +1,26 @@
 SKIP: FAILED
 
-float16_t tint_workgroupUniformLoad(inout float16_t p) {
+groupshared float16_t arg_0;
+
+void tint_zero_workgroup_memory(uint local_idx) {
+  if ((local_idx < 1u)) {
+    arg_0 = float16_t(0.0h);
+  }
   GroupMemoryBarrierWithGroupSync();
-  const float16_t result = p;
+}
+
+float16_t tint_workgroupUniformLoad_arg_0() {
+  GroupMemoryBarrierWithGroupSync();
+  float16_t result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float16_t arg_0;
-RWByteAddressBuffer prevent_dce : register(u0, space2);
+RWByteAddressBuffer prevent_dce : register(u0);
 
-void workgroupUniformLoad_e07d08() {
-  float16_t res = tint_workgroupUniformLoad(arg_0);
-  prevent_dce.Store<float16_t>(0u, res);
+float16_t workgroupUniformLoad_e07d08() {
+  float16_t res = tint_workgroupUniformLoad_arg_0();
+  return res;
 }
 
 struct tint_symbol_1 {
@@ -20,11 +28,8 @@
 };
 
 void compute_main_inner(uint local_invocation_index) {
-  {
-    arg_0 = float16_t(0.0h);
-  }
-  GroupMemoryBarrierWithGroupSync();
-  workgroupUniformLoad_e07d08();
+  tint_zero_workgroup_memory(local_invocation_index);
+  prevent_dce.Store<float16_t>(0u, workgroupUniformLoad_e07d08());
 }
 
 [numthreads(1, 1, 1)]
@@ -32,3 +37,6 @@
   compute_main_inner(tint_symbol.local_invocation_index);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EC48056240(1,13-21): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl
index d3166cb..723e537 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D599389150(7,13-21): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001690BC9F950(7,13-21): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.fxc.hlsl
index afa0add..478199f 100644
--- a/test/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/modf/scalar/mixed.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E25A098F80(11,23-38): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x000001E25A098F80(11,23-38): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x000001E25A098F80(11,23-38): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x000001F2F72202E0(11,23-38): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001F2F72202E0(11,23-38): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001F2F72202E0(11,23-38): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.fxc.hlsl
index 3f4ad73..3223e85 100644
--- a/test/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/modf/scalar/runtime.wgsl.expected.ir.fxc.hlsl
@@ -17,7 +17,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025CF9E0CB00(10,23-39): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x0000025CF9E0CB00(10,23-39): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x0000025CF9E0CB00(10,23-39): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x000001C2E27E0880(10,23-39): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000001C2E27E0880(10,23-39): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000001C2E27E0880(10,23-39): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/modf/vector/mixed.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/modf/vector/mixed.wgsl.expected.ir.fxc.hlsl
index 2fb7ca8..e171df9 100644
--- a/test/tint/builtins/modf/vector/mixed.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/modf/vector/mixed.wgsl.expected.ir.fxc.hlsl
@@ -19,7 +19,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000013591A8F780(11,28-43): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x0000013591A8F780(11,28-43): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x0000013591A8F780(11,28-43): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x000002820C3A9E00(11,28-43): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000002820C3A9E00(11,28-43): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000002820C3A9E00(11,28-43): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/builtins/modf/vector/runtime.wgsl.expected.ir.fxc.hlsl b/test/tint/builtins/modf/vector/runtime.wgsl.expected.ir.fxc.hlsl
index 8938af1..ef73f2a 100644
--- a/test/tint/builtins/modf/vector/runtime.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/builtins/modf/vector/runtime.wgsl.expected.ir.fxc.hlsl
@@ -17,7 +17,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018492943230(10,28-44): error X3013: 'modf': no matching 1 parameter intrinsic function
-C:\src\dawn\Shader@0x0000018492943230(10,28-44): error X3013: Possible intrinsic functions are:
-C:\src\dawn\Shader@0x0000018492943230(10,28-44): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
+C:\src\dawn\Shader@0x000002195B17D370(10,28-44): error X3013: 'modf': no matching 1 parameter intrinsic function
+C:\src\dawn\Shader@0x000002195B17D370(10,28-44): error X3013: Possible intrinsic functions are:
+C:\src\dawn\Shader@0x000002195B17D370(10,28-44): error X3013:     modf(float|half|min10float|min16float, out float|half|min10float|min16float ip)
 
diff --git a/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.fxc.hlsl b/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.fxc.hlsl
index 9993a78..0efde3c 100644
--- a/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.fxc.hlsl
+++ b/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.fxc.hlsl
@@ -1,14 +1,14 @@
 SKIP: FAILED
 
-diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
+<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
     v = textureSample(t, s, vec2(0, 0));
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-diagnostic_filtering/for_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
+<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
   for (; x > v.x; ) @diagnostic(warning, derivative_uniformity) {
   ^^^
 
-diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
+<dawn>/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
     v = textureSample(t, s, vec2(0, 0));
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -32,3 +32,7 @@
   main_inner(tint_symbol.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C7E09040B0(12,11-32): warning X3570: gradient instruction used in a loop with varying iteration, attempting to unroll the loop
+C:\src\dawn\Shader@0x000001C7E09040B0(11,5-22): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
+
diff --git a/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.fxc.hlsl b/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.fxc.hlsl
index 075cac3..ac9ce87 100644
--- a/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/diagnostic_filtering/for_loop_body_attribute.wgsl.expected.ir.fxc.hlsl
@@ -40,6 +40,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000183CAA85530(16,11-32): warning X3570: gradient instruction used in a loop with varying iteration, attempting to unroll the loop
-C:\src\dawn\Shader@0x00000183CAA85530(11,5-15): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
+C:\src\dawn\Shader@0x000001F31C489200(16,11-32): warning X3570: gradient instruction used in a loop with varying iteration, attempting to unroll the loop
+C:\src\dawn\Shader@0x000001F31C489200(11,5-15): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
 
diff --git a/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.fxc.hlsl b/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.fxc.hlsl
index 6cf84eb..fd19145 100644
--- a/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.fxc.hlsl
+++ b/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.fxc.hlsl
@@ -1,14 +1,14 @@
 SKIP: FAILED
 
-diagnostic_filtering/while_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
+<dawn>/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl:8:9 warning: 'textureSample' must only be called from uniform control flow
     v = textureSample(t, s, vec2(0, 0));
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-diagnostic_filtering/while_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
+<dawn>/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl:7:3 note: control flow depends on possibly non-uniform value
   while (x > v.x) @diagnostic(warning, derivative_uniformity) {
   ^^^^^
 
-diagnostic_filtering/while_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
+<dawn>/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl:8:9 note: return value of 'textureSample' may be non-uniform
     v = textureSample(t, s, vec2(0, 0));
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -30,3 +30,7 @@
   main_inner(tint_symbol.x);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000236C09AAFA0(11,9-30): warning X3570: gradient instruction used in a loop with varying iteration, attempting to unroll the loop
+C:\src\dawn\Shader@0x00000236C09AAFA0(10,3-18): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
+
diff --git a/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.fxc.hlsl b/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.fxc.hlsl
index da16adc..fc1ae68 100644
--- a/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/diagnostic_filtering/while_loop_body_attribute.wgsl.expected.ir.fxc.hlsl
@@ -40,6 +40,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BE0625E2F0(16,11-32): warning X3570: gradient instruction used in a loop with varying iteration, attempting to unroll the loop
-C:\src\dawn\Shader@0x000001BE0625E2F0(11,5-15): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
+C:\src\dawn\Shader@0x000002C2D238ED10(16,11-32): warning X3570: gradient instruction used in a loop with varying iteration, attempting to unroll the loop
+C:\src\dawn\Shader@0x000002C2D238ED10(11,5-15): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (1024 iterations)
 
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
index a788be3..1627874 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 3> a = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
-  const matrix<float16_t, 3, 3> b = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(-1.0h), float16_t(-2.0h), float16_t(-3.0h)), vector<float16_t, 3>(float16_t(-4.0h), float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 3>(float16_t(-7.0h), float16_t(-8.0h), float16_t(-9.0h)));
-  const matrix<float16_t, 3, 3> r = (a + b);
+  matrix<float16_t, 3, 3> a = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
+  matrix<float16_t, 3, 3> b = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(-1.0h), float16_t(-2.0h), float16_t(-3.0h)), vector<float16_t, 3>(float16_t(-4.0h), float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 3>(float16_t(-7.0h), float16_t(-8.0h), float16_t(-9.0h)));
+  matrix<float16_t, 3, 3> r = (a + b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001761DC9BD70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001761DC9BD70(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001761DC9BD70(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
index 2421d2b..4a8fe3c 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F9483A9530(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001F9483A9530(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001F9483A9530(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F897254410(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F897254410(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F897254410(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index e2ae399..8e17fa7 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(2.0h);
-  const float16_t r = (a + b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(2.0h);
+  float16_t r = (a + b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024EC78E7850(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000024EC78E7850(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 463133b..73cabff 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002022D36ADA0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000002022D36ADA0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000002A052157710(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002A052157710(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 5b71823..8462890 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(4.0h);
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> r = (a + b);
+  float16_t a = float16_t(4.0h);
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> r = (a + b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F0B6290680(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F0B6290680(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index eda30c4..2a56628 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000249460506B0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000249460506B0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x00000220C6D62750(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000220C6D62750(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index 6933823..ce47e41 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const float16_t b = float16_t(4.0h);
-  const vector<float16_t, 3> r = (a + b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  float16_t b = float16_t(4.0h);
+  vector<float16_t, 3> r = (a + b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B2973DFEA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B2973DFEA0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002B2973DFEA0(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index ba3ce33..981a024 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BB7B511BD0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001BB7B511BD0(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001BB7B511BD0(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x000002C0FF432B90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002C0FF432B90(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002C0FF432B90(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index d44bde9..1dca1a2 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
-  const vector<float16_t, 3> r = (a + b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
+  vector<float16_t, 3> r = (a + b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D085F3FEC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002D085F3FEC0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002D085F3FEC0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index c574986..aec7802 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002786D51A030(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002786D51A030(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002786D51A030(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B572F46090(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B572F46090(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B572F46090(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 4ad12f8..eacf8e4 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(2.0h);
-  const float16_t r = (a / b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(2.0h);
+  float16_t r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000177C72D87B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000177C72D87B0(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 5979db7..3161a0a 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E81633ADA0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001E81633ADA0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001C15B9387D0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C15B9387D0(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 7653afd..7ef3c6c 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(4.0h);
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> r = (a / b);
+  float16_t a = float16_t(4.0h);
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A379BCFA70(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001A379BCFA70(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index f19aed3..8c23007 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002508CF50AD0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000002508CF50AD0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001BE2C621FE0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001BE2C621FE0(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index 45a869b..69178b1 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const float16_t b = float16_t(4.0h);
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  float16_t b = float16_t(4.0h);
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029B5799B0A0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029B5799B0A0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000029B5799B0A0(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index e649081..3e82376 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EE093B0580(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001EE093B0580(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001EE093B0580(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x000001CF5B512860(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CF5B512860(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001CF5B512860(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index 8c621cc..54b89dc 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025D521538C0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025D521538C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025D521538C0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 88fb8bc..8b5771e 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002527C1194A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002527C1194A0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002527C1194A0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EFDED1FCA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EFDED1FCA0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EFDED1FCA0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 4b5bc7c..cf6e6a7 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(0.0h);
-  const float16_t r = (a / b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(0.0h);
+  float16_t r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E692990A00(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E692990A00(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 0958c7c..dc5b2b6 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000168EC491480(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000168EC491480(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x00000197CDBABF20(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000197CDBABF20(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 3030ee6..88c50cd 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(4.0h);
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(2.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = (a / b);
+  float16_t a = float16_t(4.0h);
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(2.0h), float16_t(0.0h));
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000286CA54FAC0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000286CA54FAC0(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 0ff073a..d32e274 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022382421D40(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000022382421D40(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001803E2E2240(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001803E2E2240(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index b651f73..17adead 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const float16_t b = float16_t(0.0h);
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  float16_t b = float16_t(0.0h);
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000177AFB0FA80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000177AFB0FA80(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000177AFB0FA80(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index a77f838..002a2ff 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CCCBA808A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001CCCBA808A0(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001CCCBA808A0(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x000001C56C6B2020(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C56C6B2020(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C56C6B2020(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index a3ba084..6f3e3dd 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000201B3936050(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000201B3936050(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000201B3936050(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 764030f..68f41b9 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E104EEA030(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001E104EEA030(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001E104EEA030(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025974920B70(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025974920B70(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025974920B70(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 0ea49f8..304b43c 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,10 @@
 void f() {
   float16_t a = float16_t(1.0h);
   float16_t b = float16_t(0.0h);
-  const float16_t r = (a / (b + b));
+  float16_t r = (a / (b + b));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DE7CF95EA0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001DE7CF95EA0(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 9d75abc..d36864e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000235AE34AFE0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000235AE34AFE0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x00000272CBA58800(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000272CBA58800(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 88a509d..6f68a7f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,10 @@
 void f() {
   float16_t a = float16_t(4.0h);
   vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(2.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = (a / (b + b));
+  vector<float16_t, 3> r = (a / (b + b));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000197BD529480(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000197BD529480(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 644924f..e7ab292 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016FB75FEA50(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000016FB75FEA50(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000002A714AB6420(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002A714AB6420(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index 1f2b4da..70ecc6f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,11 @@
 void f() {
   vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   float16_t b = float16_t(0.0h);
-  const vector<float16_t, 3> r = (a / (b + b));
+  vector<float16_t, 3> r = (a / (b + b));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000156E52C41E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000156E52C41E0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000156E52C41E0(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 0e56417..7826ea6 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000270BA789520(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000270BA789520(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000270BA789520(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x000002E010466630(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E010466630(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002E010466630(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index 588d96f..2edb148 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,11 @@
 void f() {
   vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = (a / (b + b));
+  vector<float16_t, 3> r = (a / (b + b));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FCF22D0FB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FCF22D0FB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FCF22D0FB0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 2e238ed..139635a 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023031BA97E0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000023031BA97E0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000023031BA97E0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FA5B2D0440(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FA5B2D0440(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FA5B2D0440(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 8b1f507..f291fd8 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,10 @@
 void f() {
   float16_t a = float16_t(1.0h);
   float16_t b = float16_t(0.0h);
-  const float16_t r = (a / b);
+  float16_t r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D6BBC50A20(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D6BBC50A20(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 0c2f180..79993d1 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000177A7581A00(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000177A7581A00(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x0000021445930C30(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021445930C30(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 9f591f4..49fb931 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,10 @@
 void f() {
   float16_t a = float16_t(4.0h);
   vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(2.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014BDA880F60(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000014BDA880F60(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 0a3de76..1e925b0 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E77D390D10(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001E77D390D10(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000002B7C34B2240(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002B7C34B2240(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index a2aefbd..b25f6e5 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,11 @@
 void f() {
   vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   float16_t b = float16_t(0.0h);
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023A3D11FE80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023A3D11FE80(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023A3D11FE80(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index b7781f1..4e0bf51 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017FFE732620(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000017FFE732620(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000017FFE732620(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x00000247AD882680(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000247AD882680(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000247AD882680(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index b87f976..dceb883 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -4,6 +4,11 @@
 void f() {
   vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = (a / b);
+  vector<float16_t, 3> r = (a / b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000168DD38B0D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000168DD38B0D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000168DD38B0D0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index f57a3bc..d802900 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002312503DEA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002312503DEA0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002312503DEA0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027B6218FC80(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027B6218FC80(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027B6218FC80(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 1d7f2c2..6ea331c 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+float16_t tint_trunc(float16_t param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 float16_t tint_float_mod(float16_t lhs, float16_t rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(2.0h);
-  const float16_t r = tint_float_mod(a, b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(2.0h);
+  float16_t r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BBFE5AB020(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 311bab2..c941a1b 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E186F3F660(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001E186F3F660(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001C5D29E3A80(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C5D29E3A80(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 216663a..4780bd3 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -1,14 +1,21 @@
 SKIP: FAILED
 
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 vector<float16_t, 3> tint_float_mod(float16_t lhs, vector<float16_t, 3> rhs) {
-  const vector<float16_t, 3> l = vector<float16_t, 3>((lhs).xxx);
-  return (l - (trunc((l / rhs)) * rhs));
+  vector<float16_t, 3> l = vector<float16_t, 3>((lhs).xxx);
+  return (l - (tint_trunc((l / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(4.0h);
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> r = tint_float_mod(a, b);
+  float16_t a = float16_t(4.0h);
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000206F864FF30(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index dbedc3d..a707040 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000248506A6AD0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000248506A6AD0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001EC0CDDFD60(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EC0CDDFD60(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index 788ed10..bb410ca 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -1,14 +1,21 @@
 SKIP: FAILED
 
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 vector<float16_t, 3> tint_float_mod(vector<float16_t, 3> lhs, float16_t rhs) {
-  const vector<float16_t, 3> r = vector<float16_t, 3>((rhs).xxx);
-  return (lhs - (trunc((lhs / r)) * r));
+  vector<float16_t, 3> r = vector<float16_t, 3>((rhs).xxx);
+  return (lhs - (tint_trunc((lhs / r)) * r));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const float16_t b = float16_t(4.0h);
-  const vector<float16_t, 3> r = tint_float_mod(a, b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  float16_t b = float16_t(4.0h);
+  vector<float16_t, 3> r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023102AC3D20(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 106bec9..ebb034e 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -11,7 +11,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020340630200(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000020340630200(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000020340630200(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x00000201A913FCB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000201A913FCB0(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000201A913FCB0(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index 43dbce5..7f910a9 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 vector<float16_t, 3> tint_float_mod(vector<float16_t, 3> lhs, vector<float16_t, 3> rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
-  const vector<float16_t, 3> r = tint_float_mod(a, b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
+  vector<float16_t, 3> r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000280DD9345E0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index fca65d0..037fec8 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -11,9 +11,9 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026578D094A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026578D094A0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026578D094A0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026578D094A0(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000026578D094A0(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001307B44F9A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001307B44F9A0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001307B44F9A0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001307B44F9A0(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001307B44F9A0(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index c85f822..8bdbc5f 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+float16_t tint_trunc(float16_t param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 float16_t tint_float_mod(float16_t lhs, float16_t rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(0.0h);
-  const float16_t r = tint_float_mod(a, b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(0.0h);
+  float16_t r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BAA963FE00(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 006590f..9064341 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000180E6AE0010(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000180E6AE0010(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x00000299BA683710(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000299BA683710(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index e213942..463b1ae 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 vector<float16_t, 3> tint_float_mod(vector<float16_t, 3> lhs, vector<float16_t, 3> rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = tint_float_mod(a, b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
+  vector<float16_t, 3> r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001788A4CFF50(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index efb24a5..bc8a281 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -11,9 +11,9 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000214D1A9A010(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000214D1A9A010(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000214D1A9A010(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000214D1A9A010(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000214D1A9A010(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019069F7DC80(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019069F7DC80(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019069F7DC80(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019069F7DC80(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019069F7DC80(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 1002ebf..58978aa 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+float16_t tint_trunc(float16_t param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 float16_t tint_float_mod(float16_t lhs, float16_t rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
   float16_t a = float16_t(1.0h);
   float16_t b = float16_t(0.0h);
-  const float16_t r = tint_float_mod(a, (b + b));
+  float16_t r = tint_float_mod(a, (b + b));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D25595B000(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 55a82c9..ea73c63 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002816ADD92D0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000002816ADD92D0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x0000026D993F1760(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000026D993F1760(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index 678c366..12dd1c3 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 vector<float16_t, 3> tint_float_mod(vector<float16_t, 3> lhs, vector<float16_t, 3> rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
   vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = tint_float_mod(a, (b + b));
+  vector<float16_t, 3> r = tint_float_mod(a, (b + b));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E0E8DA9A70(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index a4468f0..f367dbd 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -13,11 +13,11 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000290F11F9490(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000290F11F9490(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000290F11F9490(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000290F11F9490(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000290F11F9490(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000290F11F9490(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000290F11F9490(10,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025B5288B740(10,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 90a9f7c..7c2f504 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+float16_t tint_trunc(float16_t param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 float16_t tint_float_mod(float16_t lhs, float16_t rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
   float16_t a = float16_t(1.0h);
   float16_t b = float16_t(0.0h);
-  const float16_t r = tint_float_mod(a, b);
+  float16_t r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029CD1945E50(1,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index aeb5d58..ebe4a49 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023541639820(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000023541639820(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x00000209855576E0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000209855576E0(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index fe70abc..ce80949 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+vector<float16_t, 3> tint_trunc(vector<float16_t, 3> param_0) {
+  return param_0 < 0 ? ceil(param_0) : floor(param_0);
+}
+
 vector<float16_t, 3> tint_float_mod(vector<float16_t, 3> lhs, vector<float16_t, 3> rhs) {
-  return (lhs - (trunc((lhs / rhs)) * rhs));
+  return (lhs - (tint_trunc((lhs / rhs)) * rhs));
 }
 
 [numthreads(1, 1, 1)]
 void f() {
   vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(0.0h), float16_t(5.0h), float16_t(0.0h));
-  const vector<float16_t, 3> r = tint_float_mod(a, b);
+  vector<float16_t, 3> r = tint_float_mod(a, b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FDFD960D30(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 0d2503e..ae2bdf4 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -13,11 +13,11 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000255B049CB80(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000255B049CB80(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000255B049CB80(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000255B049CB80(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000255B049CB80(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000255B049CB80(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000255B049CB80(10,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E789D4B100(10,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.fxc.hlsl
index 1e85862..8ecce9d 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 2, 4> a = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
-  const matrix<float16_t, 4, 2> b = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(-1.0h), float16_t(-2.0h)), vector<float16_t, 2>(float16_t(-3.0h), float16_t(-4.0h)), vector<float16_t, 2>(float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 2>(float16_t(-7.0h), float16_t(-8.0h)));
-  const matrix<float16_t, 4, 4> r = mul(b, a);
+  matrix<float16_t, 2, 4> a = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+  matrix<float16_t, 4, 2> b = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(-1.0h), float16_t(-2.0h)), vector<float16_t, 2>(float16_t(-3.0h), float16_t(-4.0h)), vector<float16_t, 2>(float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 2>(float16_t(-7.0h), float16_t(-8.0h)));
+  matrix<float16_t, 4, 4> r = mul(b, a);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000262250CD3F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000262250CD3F0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000262250CD3F0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.fxc.hlsl
index efeb284..3dfd983 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001905C92FA50(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001905C92FA50(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001905C92FA50(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002CEF4514010(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002CEF4514010(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002CEF4514010(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.fxc.hlsl
index 4d2e2cf..b4f5edc 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.fxc.hlsl
@@ -18,6 +18,9 @@
   uint2 ubo_load_3 = data[1].xy;
   vector<float16_t, 2> ubo_load_3_xz = vector<float16_t, 2>(f16tof32(ubo_load_3 & 0xFFFF));
   float16_t ubo_load_3_y = f16tof32(ubo_load_3[0] >> 16);
-  const vector<float16_t, 2> x = mul(vector<float16_t, 3>(ubo_load_3_xz[0], ubo_load_3_y, ubo_load_3_xz[1]), data_load(0u));
+  vector<float16_t, 2> x = mul(vector<float16_t, 3>(ubo_load_3_xz[0], ubo_load_3_y, ubo_load_3_xz[1]), data_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027412C38FA0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 24ca992..a0d5058 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -39,5 +39,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AAB424FCC0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E8ACCEB580(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
index 32d1ba3..f17115d 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 3> a = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
-  const matrix<float16_t, 3, 3> b = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(-1.0h), float16_t(-2.0h), float16_t(-3.0h)), vector<float16_t, 3>(float16_t(-4.0h), float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 3>(float16_t(-7.0h), float16_t(-8.0h), float16_t(-9.0h)));
-  const matrix<float16_t, 3, 3> r = mul(b, a);
+  matrix<float16_t, 3, 3> a = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
+  matrix<float16_t, 3, 3> b = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(-1.0h), float16_t(-2.0h), float16_t(-3.0h)), vector<float16_t, 3>(float16_t(-4.0h), float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 3>(float16_t(-7.0h), float16_t(-8.0h), float16_t(-9.0h)));
+  matrix<float16_t, 3, 3> r = mul(b, a);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B96632CD70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B96632CD70(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B96632CD70(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
index 2ec2efb..0469146 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017E0C6EFC60(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000017E0C6EFC60(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000017E0C6EFC60(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023A11ED61C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023A11ED61C0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023A11ED61C0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.fxc.hlsl
index 595fe7b..cc32d73 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -27,6 +27,9 @@
   uint2 ubo_load_6 = data[1].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const vector<float16_t, 3> x = mul(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]), data_load(0u));
+  vector<float16_t, 3> x = mul(vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]), data_load(0u));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002318B3301E0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index f87d732..dace40d 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -28,5 +28,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012E5B9B0E90(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002540C28FCF0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.fxc.hlsl
index 323c2e3..c7b1c85 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 4, 2> a = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(-1.0h), float16_t(-2.0h)), vector<float16_t, 2>(float16_t(-3.0h), float16_t(-4.0h)), vector<float16_t, 2>(float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 2>(float16_t(-7.0h), float16_t(-8.0h)));
-  const matrix<float16_t, 2, 4> b = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
-  const matrix<float16_t, 2, 2> r = mul(b, a);
+  matrix<float16_t, 4, 2> a = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(-1.0h), float16_t(-2.0h)), vector<float16_t, 2>(float16_t(-3.0h), float16_t(-4.0h)), vector<float16_t, 2>(float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 2>(float16_t(-7.0h), float16_t(-8.0h)));
+  matrix<float16_t, 2, 4> b = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+  matrix<float16_t, 2, 2> r = mul(b, a);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000227FCAAF950(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000227FCAAF950(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000227FCAAF950(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.fxc.hlsl
index d879713..8989fce 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002783818E590(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002783818E590(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002783818E590(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CE276D4080(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CE276D4080(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CE276D4080(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index ab740eb..02e2537 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(2.0h);
-  const float16_t r = (a * b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(2.0h);
+  float16_t r = (a * b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024BDD6A87B0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000024BDD6A87B0(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 11faa18..459e717 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A035A4ADA0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000002A035A4ADA0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000002180A2387D0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002180A2387D0(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 0986655..077ac58 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(4.0h);
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> r = (a * b);
+  float16_t a = float16_t(4.0h);
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> r = (a * b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002BEC19EFEA0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002BEC19EFEA0(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index c2b71f5..f7f0e97 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000150D52425C0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000150D52425C0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001FD8C3B2530(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FD8C3B2530(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.fxc.hlsl
index 373a4b7..9d1741d 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.fxc.hlsl
@@ -27,6 +27,9 @@
   uint2 ubo_load_6 = data[1].zw;
   vector<float16_t, 2> ubo_load_6_xz = vector<float16_t, 2>(f16tof32(ubo_load_6 & 0xFFFF));
   float16_t ubo_load_6_y = f16tof32(ubo_load_6[0] >> 16);
-  const vector<float16_t, 3> x = mul(data_load_1(0u), vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]));
+  vector<float16_t, 3> x = mul(data_load_1(0u), vector<float16_t, 3>(ubo_load_6_xz[0], ubo_load_6_y, ubo_load_6_xz[1]));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FA0C578FC0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
index 5df32e9..2bb2689 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -28,5 +28,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C803D53130(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000196857B3C00(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.fxc.hlsl
index 331b439..5b5670e 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.fxc.hlsl
@@ -32,6 +32,9 @@
   uint2 ubo_load_8 = data[2].xy;
   vector<float16_t, 2> ubo_load_8_xz = vector<float16_t, 2>(f16tof32(ubo_load_8 & 0xFFFF));
   float16_t ubo_load_8_y = f16tof32(ubo_load_8[0] >> 16);
-  const vector<float16_t, 4> x = mul(data_load_1(0u), vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]));
+  vector<float16_t, 4> x = mul(data_load_1(0u), vector<float16_t, 3>(ubo_load_8_xz[0], ubo_load_8_y, ubo_load_8_xz[1]));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002250F313A40(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.fxc.hlsl
index 82c2d33..b40a4fa 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -29,5 +29,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012B939325D0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E69A134CE0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index dbd5341..041d0a3 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const float16_t b = float16_t(4.0h);
-  const vector<float16_t, 3> r = (a * b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  float16_t b = float16_t(4.0h);
+  vector<float16_t, 3> r = (a * b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020440F5FA70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020440F5FA70(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000020440F5FA70(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 8a2f034..32b2b7e 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000260D2881C90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000260D2881C90(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000260D2881C90(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x0000018F96162970(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018F96162970(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000018F96162970(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index 358ea75..915705c 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
-  const vector<float16_t, 3> r = (a * b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
+  vector<float16_t, 3> r = (a * b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024F645DBFE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024F645DBFE0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024F645DBFE0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 3678f60..1606f37 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000227F3E29FB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000227F3E29FB0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000227F3E29FB0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C66BAFC40(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C66BAFC40(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C66BAFC40(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
index 5405489..0b29f4c 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const matrix<float16_t, 3, 3> a = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
-  const matrix<float16_t, 3, 3> b = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(-1.0h), float16_t(-2.0h), float16_t(-3.0h)), vector<float16_t, 3>(float16_t(-4.0h), float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 3>(float16_t(-7.0h), float16_t(-8.0h), float16_t(-9.0h)));
-  const matrix<float16_t, 3, 3> r = (a - b);
+  matrix<float16_t, 3, 3> a = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
+  matrix<float16_t, 3, 3> b = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(-1.0h), float16_t(-2.0h), float16_t(-3.0h)), vector<float16_t, 3>(float16_t(-4.0h), float16_t(-5.0h), float16_t(-6.0h)), vector<float16_t, 3>(float16_t(-7.0h), float16_t(-8.0h), float16_t(-9.0h)));
+  matrix<float16_t, 3, 3> r = (a - b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000228AF8CFEA0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000228AF8CFEA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000228AF8CFEA0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
index f164794..0c809bb 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029F5A330150(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000029F5A330150(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000029F5A330150(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017AFB44F9C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017AFB44F9C0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017AFB44F9C0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.fxc.hlsl
index 2184244..e5ae50b 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = float16_t(2.0h);
-  const float16_t r = (a - b);
+  float16_t a = float16_t(1.0h);
+  float16_t b = float16_t(2.0h);
+  float16_t r = (a - b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000253FCC655E0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000253FCC655E0(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
index 22b5692..3905e1f 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CE9676ADA0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001CE9676ADA0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x0000018CF9DE87D0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000018CF9DE87D0(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.fxc.hlsl
index 78f059f..2bc64fb 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(4.0h);
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> r = (a - b);
+  float16_t a = float16_t(4.0h);
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> r = (a - b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B3B96F0B20(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B3B96F0B20(3,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 239c716..a03a2b5 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,6 +9,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021F61462290(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000021F61462290(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x00000144449920F0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000144449920F0(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.fxc.hlsl
index 5d35988..6a13cb1 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const float16_t b = float16_t(4.0h);
-  const vector<float16_t, 3> r = (a - b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  float16_t b = float16_t(4.0h);
+  vector<float16_t, 3> r = (a - b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022507607F70(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022507607F70(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022507607F70(4,13): error X3000: unrecognized identifier 'b'
+
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
index a3dbd99..f298718 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AAA878DC20(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001AAA878DC20(5,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001AAA878DC20(5,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x000002247C4420F0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002247C4420F0(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002247C4420F0(5,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.fxc.hlsl
index 34cc807..728d95a 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.fxc.hlsl
@@ -2,8 +2,13 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
-  const vector<float16_t, 3> r = (a - b);
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h));
+  vector<float16_t, 3> r = (a - b);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000146F1B338B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000146F1B338B0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000146F1B338B0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
index 5382f45..4860f60 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AB6F3292C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001AB6F3292C0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001AB6F3292C0(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002207F580040(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002207F580040(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002207F580040(6,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.fxc.hlsl
index fcec2d0..64f812d 100644
--- a/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t b = float16_t(1.0h);
+  float16_t b = float16_t(1.0h);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x00000174D90470D0(3,9-17): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FD010977A0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FD010977A0(3,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl
index 693b226..d10953a 100644
--- a/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,6 +7,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C50440C0A0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001C50440C0A0(4,13): error X3000: unrecognized identifier 'b'
+C:\src\dawn\Shader@0x000001A75F525990(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001A75F525990(4,13): error X3000: unrecognized identifier 'b'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl
index 65d4ffa..b80a5f2 100644
--- a/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000022D117788A0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001159FB709D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl
index 28fe6de..1e5333a 100644
--- a/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027DBF0B4DD0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002882FE25E90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl
index de09eaf..9d1b4a1 100644
--- a/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001ABDA989700(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000256F9DF09D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl
index e379532..394676e 100644
--- a/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B494B33590(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F6A4BF4970(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl
index 60880d7..0c7181b 100644
--- a/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000019F1F909150(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000018521B409D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl
index 13c53d3..b9383a4d 100644
--- a/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002ACDD6343D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020DBDEE09F0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl
index badd02d..8f1be47 100644
--- a/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  vector<float16_t, 2> b = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001479B346D10(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021F664E09E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl
index 9518929..0e3163c 100644
--- a/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021EB09B2120(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000226A8017F90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl
index 9af155f..b98a005 100644
--- a/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001DFC5A48C70(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016210BE80D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl
index 3adf384..492a6d6 100644
--- a/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024AB92DADB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B622C70740(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl
index 4e1c19c..a623ae4 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001FA6B336DC0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E48BEA4960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl
index 16f4ef9..7b7a7b6 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027FFE09ADB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001283CEC52F0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl
index f0ec511..cb0a77e 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000020858736DC0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000212BB084960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl
index 41f5e24..0a91c4f 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D39C7DADB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A5F2D20A00(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl
index cc3251f..336befc 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001E2E40D90C0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001735F3D4440(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl
index 434f623..404f6d5 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CB747C2680(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025967A20A00(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl
index 54ac9c8..8b1f2ba 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl
@@ -2,9 +2,9 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  vector<float16_t, 4> b = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000002A182AC9D70(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001994EAE4960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl
index 6c1d95d..c98aa36 100644
--- a/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/const/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015BFE4119E0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EC2C8BE9A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.fxc.hlsl
index 55657e2..aaa37da 100644
--- a/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.fxc.hlsl
@@ -2,10 +2,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float16_t a = float16_t(1.0h);
-  const float16_t b = a;
+  float16_t a = float16_t(1.0h);
+  float16_t b = a;
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000023BEF017690(3,9-17): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C74E726820(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001C74E726820(3,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl
index c7eb52e..b9ec242 100644
--- a/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/16bit/f16-f16.wgsl.expected.ir.fxc.hlsl
@@ -8,6 +8,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E096A1ABC0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001E096A1ABC0(4,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x0000015C4A665530(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000015C4A665530(4,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl
index 8729fa0..18c7d16 100644
--- a/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.fxc.hlsl
@@ -9,10 +9,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float a = 2.003662109375f;
-  const vector<float16_t, 2> b = tint_bitcast_to_f16(a);
+  float a = 2.003662109375f;
+  vector<float16_t, 2> b = tint_bitcast_to_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000002C96174CDD0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EDC932B090(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl
index 7ba815f..ca8169c 100644
--- a/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/f32-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000211E9CE96A0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027574C90300(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl
index f5c30dc..14ff712 100644
--- a/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.fxc.hlsl
@@ -9,10 +9,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int a = 1073757184;
-  const vector<float16_t, 2> b = tint_bitcast_to_f16(a);
+  int a = 1073757184;
+  vector<float16_t, 2> b = tint_bitcast_to_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x00000234EF107030(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025F1588EBD0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl
index b2e2831..cb14709 100644
--- a/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/i32-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016A1BD696A0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000209BEFCCFC0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl
index d34b347..0b514a9 100644
--- a/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.fxc.hlsl
@@ -9,10 +9,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const uint a = 1073757184u;
-  const vector<float16_t, 2> b = tint_bitcast_to_f16(a);
+  uint a = 1073757184u;
+  vector<float16_t, 2> b = tint_bitcast_to_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000020E6D499E20(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002384388F9A0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl
index f7618b4..75310f9 100644
--- a/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/u32-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000265758494F0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002757546FF10(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.fxc.hlsl
index 9dc5eb0..16eb4de 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.fxc.hlsl
@@ -7,12 +7,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
-  const float b = tint_bitcast_from_f16(a);
+  vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  float b = tint_bitcast_from_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001EDAADDFBA0(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001EDAADDFBA0(2,29-31): error X3004: undeclared identifier 'src'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001EDAADDFBA0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001F968923C90(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F968923C90(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001F968923C90(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.fxc.hlsl
index 81c69b6..72374fc 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002FA6AC89B70(2,36-44): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000002FA6AC89B70(3,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000002FA6AC89B70(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000028C24748BD0(2,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028C24748BD0(3,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000028C24748BD0(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.fxc.hlsl
index 856bedc..50c056c 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.fxc.hlsl
@@ -7,12 +7,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
-  const int b = tint_bitcast_from_f16(a);
+  vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  int b = tint_bitcast_from_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001DC9BD890B0(1,34-42): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001DC9BD890B0(2,29-31): error X3004: undeclared identifier 'src'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001DC9BD890B0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000002542ED2FAA0(1,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002542ED2FAA0(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000002542ED2FAA0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.fxc.hlsl
index 29dcece..1f1d423 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FBAB6D9510(2,34-42): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001FBAB6D9510(3,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001FBAB6D9510(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000017E7B38FBF0(2,34-42): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017E7B38FBF0(3,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000017E7B38FBF0(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.fxc.hlsl
index 8d2c1cb..4d00cde 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.fxc.hlsl
@@ -7,12 +7,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
-  const uint b = tint_bitcast_from_f16(a);
+  vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  uint b = tint_bitcast_from_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000011D0C566F70(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000011D0C566F70(2,29-31): error X3004: undeclared identifier 'src'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000011D0C566F70(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000019D79A38020(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019D79A38020(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000019D79A38020(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.fxc.hlsl
index 3bd0673..fb3182e5 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B5ABF3FE30(2,35-43): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001B5ABF3FE30(3,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001B5ABF3FE30(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001DE4802B720(2,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DE4802B720(3,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001DE4802B720(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl
index 4dd9a7a..ec98ba9 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.fxc.hlsl
@@ -2,11 +2,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
-  const vector<float16_t, 2> b = a;
+  vector<float16_t, 2> a = vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h));
+  vector<float16_t, 2> b = a;
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000019B1F6BF7B0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000019B1F6BF7B0(4,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019FDF204960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019FDF204960(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl
index eb225dd..3f4d589 100644
--- a/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/32bit/vec2f16-vec2f16.wgsl.expected.ir.fxc.hlsl
@@ -8,6 +8,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000205AE98ADA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000205AE98ADA0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E6EF884970(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E6EF884970(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl
index ffb96ad..21089ca 100644
--- a/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.fxc.hlsl
@@ -2,11 +2,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
-  const vector<float16_t, 3> b = a;
+  vector<float16_t, 3> a = vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+  vector<float16_t, 3> b = a;
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001B8F32394E0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001B8F32394E0(4,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014F49224960(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014F49224960(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl
index 52bf4e2..896862c 100644
--- a/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/48bit/vec3f16-vec3f16.wgsl.expected.ir.fxc.hlsl
@@ -8,6 +8,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000228BECEFB80(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000228BECEFB80(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028A0A134970(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028A0A134970(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl
index 030bf10..c3642f6 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.fxc.hlsl
@@ -9,10 +9,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const float2 a = float2(2.003662109375f, -513.03125f);
-  const vector<float16_t, 4> b = tint_bitcast_to_f16(a);
+  float2 a = float2(2.003662109375f, -513.03125f);
+  vector<float16_t, 4> b = tint_bitcast_to_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001B7D61710A0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EB94E7B090(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl
index 4601848..bd59c8e 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec2f32-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CA80A29530(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D6C99EA830(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl
index b80982d..91f6135 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.fxc.hlsl
@@ -9,10 +9,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const int2 a = int2(1073757184, -1006616064);
-  const vector<float16_t, 4> b = tint_bitcast_to_f16(a);
+  int2 a = int2(1073757184, -1006616064);
+  vector<float16_t, 4> b = tint_bitcast_to_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x000001D4589575D0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024D21470BD0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl
index 694d6f3..f7dbaad 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec2i32-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025DF2F5F7F0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002792A077FD0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl
index d9be8ec..68b0581 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.fxc.hlsl
@@ -9,10 +9,10 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const uint2 a = uint2(1073757184u, 3288351232u);
-  const vector<float16_t, 4> b = tint_bitcast_to_f16(a);
+  uint2 a = uint2(1073757184u, 3288351232u);
+  vector<float16_t, 4> b = tint_bitcast_to_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000025566ACBF30(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B7C93DB0C0(1,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl
index f40f4bc..464a607 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec2u32-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019B48F996F0(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000206F37ED230(2,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.fxc.hlsl
index 8a8efb2..d1115b3 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.fxc.hlsl
@@ -7,12 +7,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
-  const float2 b = tint_bitcast_from_f16(a);
+  vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  float2 b = tint_bitcast_from_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000020C6564D210(1,37-45): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000020C6564D210(2,29-31): error X3004: undeclared identifier 'src'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000020C6564D210(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001DCBDFAF9E0(1,37-45): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DCBDFAF9E0(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001DCBDFAF9E0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.fxc.hlsl
index 335d518..9ab00e7 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2f32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D6B4E2DE70(2,37-45): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001D6B4E2DE70(3,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001D6B4E2DE70(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x00000281077B0640(2,37-45): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000281077B0640(3,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x00000281077B0640(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.fxc.hlsl
index a2a9919..9dd3c92 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.fxc.hlsl
@@ -7,12 +7,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
-  const int2 b = tint_bitcast_from_f16(a);
+  vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  int2 b = tint_bitcast_from_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x00000239A5C0BF60(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x00000239A5C0BF60(2,29-31): error X3004: undeclared identifier 'src'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x00000239A5C0BF60(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000002331529FE50(1,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002331529FE50(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000002331529FE50(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.fxc.hlsl
index 9cde268..9b0b319 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2i32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029AEA57A800(2,35-43): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000029AEA57A800(3,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x0000029AEA57A800(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000028DA42846C0(2,35-43): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028DA42846C0(3,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x0000028DA42846C0(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.fxc.hlsl
index 214da54..436f5a6 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.fxc.hlsl
@@ -7,12 +7,12 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
-  const uint2 b = tint_bitcast_from_f16(a);
+  vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  uint2 b = tint_bitcast_from_f16(a);
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000024F04F3BED0(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000024F04F3BED0(2,29-31): error X3004: undeclared identifier 'src'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000024F04F3BED0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x000001D8F200B0C0(1,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D8F200B0C0(2,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x000001D8F200B0C0(2,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.fxc.hlsl
index 20114cc..f7fd646 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec2u32.wgsl.expected.ir.fxc.hlsl
@@ -13,7 +13,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F70665DE70(2,36-44): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001F70665DE70(3,29-31): error X3004: undeclared identifier 'src'
-C:\src\dawn\Shader@0x000001F70665DE70(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x00000257BCBEB0E0(2,36-44): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000257BCBEB0E0(3,29-31): error X3004: undeclared identifier 'src'
+C:\src\dawn\Shader@0x00000257BCBEB0E0(3,22-32): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl
index 9311773..bf182a1 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.fxc.hlsl
@@ -2,11 +2,11 @@
 
 [numthreads(1, 1, 1)]
 void f() {
-  const vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
-  const vector<float16_t, 4> b = a;
+  vector<float16_t, 4> a = vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(-4.0h));
+  vector<float16_t, 4> b = a;
   return;
 }
 FXC validation failure:
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000021AD80372B0(3,16-24): error X3000: syntax error: unexpected token 'float16_t'
-D:\Projects\RampUp\dawn\test\tint\expressions\bitcast\Shader@0x0000021AD80372B0(4,16-24): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B14C691FE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B14C691FE0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl
index 1f0d130..c1ac3f5 100644
--- a/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/bitcast/let/64bit/vec4f16-vec4f16.wgsl.expected.ir.fxc.hlsl
@@ -8,6 +8,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD0A9E19B0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001FD0A9E19B0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001785F350C10(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001785F350C10(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/splat/call/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/splat/call/f16.wgsl.expected.fxc.hlsl
index 03e4a6d..b48bf14 100644
--- a/test/tint/expressions/splat/call/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/splat/call/f16.wgsl.expected.fxc.hlsl
@@ -10,10 +10,13 @@
 }
 
 void f() {
-  const float16_t tint_symbol = get_f16();
+  float16_t tint_symbol = get_f16();
   vector<float16_t, 2> v2 = vector<float16_t, 2>((tint_symbol).xx);
-  const float16_t tint_symbol_1 = get_f16();
+  float16_t tint_symbol_1 = get_f16();
   vector<float16_t, 3> v3 = vector<float16_t, 3>((tint_symbol_1).xxx);
-  const float16_t tint_symbol_2 = get_f16();
+  float16_t tint_symbol_2 = get_f16();
   vector<float16_t, 4> v4 = vector<float16_t, 4>((tint_symbol_2).xxxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000271C0F8AFA0(6,1-9): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/splat/call/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/splat/call/f16.wgsl.expected.ir.fxc.hlsl
index 69ae0e5..04f5e58 100644
--- a/test/tint/expressions/splat/call/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/splat/call/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000014ED81C9710(2,1-9): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000214A6370220(2,1-9): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/splat/expression/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/splat/expression/f16.wgsl.expected.fxc.hlsl
index d2b49ea..19609f1 100644
--- a/test/tint/expressions/splat/expression/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/splat/expression/f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,8 @@
   vector<float16_t, 3> v3 = (float16_t(3.0h)).xxx;
   vector<float16_t, 4> v4 = (float16_t(3.0h)).xxxx;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000252D2573B10(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000252D2573B10(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000252D2573B10(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/splat/expression/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/splat/expression/f16.wgsl.expected.ir.fxc.hlsl
index d4c399c..59468bb 100644
--- a/test/tint/expressions/splat/expression/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/splat/expression/f16.wgsl.expected.ir.fxc.hlsl
@@ -12,7 +12,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022FAD369770(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000022FAD369770(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000022FAD369770(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DF760CBBD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DF760CBBD0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DF760CBBD0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/splat/immediate/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/splat/immediate/f16.wgsl.expected.fxc.hlsl
index 8daf8c4..3c978c8 100644
--- a/test/tint/expressions/splat/immediate/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/splat/immediate/f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,8 @@
   vector<float16_t, 3> v3 = (float16_t(1.0h)).xxx;
   vector<float16_t, 4> v4 = (float16_t(1.0h)).xxxx;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000011E8A753C40(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000011E8A753C40(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000011E8A753C40(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/splat/immediate/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/splat/immediate/f16.wgsl.expected.ir.fxc.hlsl
index 6eb2357..1395f6d 100644
--- a/test/tint/expressions/splat/immediate/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/splat/immediate/f16.wgsl.expected.ir.fxc.hlsl
@@ -12,7 +12,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000211573C9A10(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000211573C9A10(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000211573C9A10(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002ED0D320FC0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002ED0D320FC0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002ED0D320FC0(5,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/splat/var/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/splat/var/f16.wgsl.expected.fxc.hlsl
index 5f897a2..8751081 100644
--- a/test/tint/expressions/splat/var/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/splat/var/f16.wgsl.expected.fxc.hlsl
@@ -11,3 +11,7 @@
   vector<float16_t, 3> v3 = vector<float16_t, 3>((v).xxx);
   vector<float16_t, 4> v4 = vector<float16_t, 4>((v).xxxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000252B6A50660(7,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000252B6A50660(7,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/splat/var/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/splat/var/f16.wgsl.expected.ir.fxc.hlsl
index d9731eb..0a7a2b7 100644
--- a/test/tint/expressions/splat/var/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/splat/var/f16.wgsl.expected.ir.fxc.hlsl
@@ -13,6 +13,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DFA0D696D0(3,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001DFA0D696D0(3,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x000001D950C3BA80(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D950C3BA80(3,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.fxc.hlsl
index ffeafd0..fc54b1f 100644
--- a/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,7 @@
   float16_t b = float16_t(1.0h);
   float16_t c = float16_t(1.0h);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DBBCD44970(7,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001DBBCD44970(7,13): error X3000: unrecognized identifier 'a'
+
diff --git a/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.ir.fxc.hlsl
index d938679..f15de03 100644
--- a/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/splat/with_swizzle/f16.wgsl.expected.ir.fxc.hlsl
@@ -12,6 +12,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E09555FB60(3,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001E09555FB60(3,13): error X3000: unrecognized identifier 'a'
+C:\src\dawn\Shader@0x000001ADE9240BE0(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001ADE9240BE0(3,13): error X3000: unrecognized identifier 'a'
 
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.fxc.hlsl
index b52d9c7..cef6b41 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.fxc.hlsl
@@ -486,3 +486,8 @@
   float16_t ubo_load_117_y = f16tof32(ubo_load_117[0] >> 16);
   vector<float16_t, 4> zzzz = vector<float16_t, 3>(ubo_load_117_xz[0], ubo_load_117_y, ubo_load_117_xz[1]).zzzz;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017F857CD000(12,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017F857CD000(13,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000017F857CD000(13,13-22): error X3000: unrecognized identifier 'ubo_load_y'
+
diff --git a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl
index 2031a4f..d6194dd 100644
--- a/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -145,5 +145,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019D98502F10(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000140DC344FB0(5,8-16): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.fxc.hlsl
index 0a08677..7ce2f8f 100644
--- a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.fxc.hlsl
@@ -134,3 +134,6 @@
   vector<float16_t, 4> zzzy = P.v.zzzy;
   vector<float16_t, 4> zzzz = P.v.zzzz;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025B4D09AA20(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.fxc.hlsl
index 352565b..9a1a844 100644
--- a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -135,5 +135,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001767F0B0150(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B856221EF0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.fxc.hlsl
index 207ecc7..82ac7a5 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.fxc.hlsl
@@ -13,3 +13,6 @@
   U.Store<float16_t>(2u, float16_t(2.0h));
   U.Store<float16_t>(4u, float16_t(3.0h));
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028B6B9F0CB0(9,3-9): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl
index b7ebdf5..17404a3 100644
--- a/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/packed_vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B6193EF610(4,3-9): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001E62D2C0200(4,3-9): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.fxc.hlsl
index c2e8fc2..1f3b150 100644
--- a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.fxc.hlsl
@@ -17,3 +17,6 @@
   P.v.y = float16_t(2.0h);
   P.v.z = float16_t(3.0h);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026EEAE10070(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.fxc.hlsl
index fc94028..a76ed74 100644
--- a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F75A94CC30(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BB0295F3C0(2,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.fxc.hlsl
index d51a368..47ace15 100644
--- a/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 2, 2> tint_symbol = m();
+  matrix<float16_t, 2, 2> tint_symbol = m();
   float2x2 v = float2x2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C818CADC80(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index a97839d..052135f 100644
--- a/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025D45DB9800(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000202343C0AB0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.fxc.hlsl
index f7d416a..591da5f 100644
--- a/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float2x2 tint_symbol = m();
+  float2x2 tint_symbol = m();
   matrix<float16_t, 2, 2> v = matrix<float16_t, 2, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027B6804FFE0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 56dc7bd..879651e 100644
--- a/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000170929DF7B0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020D920D3A60(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.fxc.hlsl
index 38461f8..05735ae 100644
--- a/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 2, 2> u = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 2>(float16_t(3.0h), float16_t(4.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026D34C933B0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index e39252a..db13bd4 100644
--- a/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029ED5FBF060(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FCC53236F0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.fxc.hlsl
index 778637f..de7b268 100644
--- a/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float2x2 v = float2x2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000277DA915FE0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index c4d4e2f..a39ef15 100644
--- a/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D7CD8192C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016D4EDBC220(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.fxc.hlsl
index c78385e..80a9247 100644
--- a/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 2, 2> v = matrix<float16_t, 2, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F3ACF12670(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index da0f024..90c9224 100644
--- a/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025B11311190(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000182F8A32210(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.fxc.hlsl
index 171cffa..ea0b275 100644
--- a/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 2, 3> tint_symbol = m();
+  matrix<float16_t, 2, 3> tint_symbol = m();
   float2x3 v = float2x3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C22E0E9680(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index 35bf67f..d0f94ab 100644
--- a/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B9DCD19660(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002596954C3B0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.fxc.hlsl
index 63e88c5..bf870ec 100644
--- a/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float2x3 tint_symbol = m();
+  float2x3 tint_symbol = m();
   matrix<float16_t, 2, 3> v = matrix<float16_t, 2, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001ECE7BD09E0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 3560ef7..18acc0f 100644
--- a/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DD66809130(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002CFA396CFC0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.fxc.hlsl
index 9984a52..9be6ea1 100644
--- a/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 2, 3> u = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A568525240(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index d44e722..88529e2 100644
--- a/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F14002F290(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A9C9DB6280(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.fxc.hlsl
index 6ea7f4d..e6f240e 100644
--- a/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float2x3 v = float2x3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DEFE1905C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 8ecd27e..e87fed6 100644
--- a/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019B24029FC0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F8D08FA830(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.fxc.hlsl
index 59d55c1..aebcd14 100644
--- a/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 2, 3> v = matrix<float16_t, 2, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019B137F5FB0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index a011216..8ad66e2 100644
--- a/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020BDB01DF20(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BF429241E0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.fxc.hlsl
index 2a6ea80..5a69335 100644
--- a/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 2, 4> tint_symbol = m();
+  matrix<float16_t, 2, 4> tint_symbol = m();
   float2x4 v = float2x4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C75FCEF060(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index afbe79b..7ea6c31 100644
--- a/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023E66831340(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B3822D5D10(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.fxc.hlsl
index d112af6..61a60ab 100644
--- a/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float2x4 tint_symbol = m();
+  float2x4 tint_symbol = m();
   matrix<float16_t, 2, 4> v = matrix<float16_t, 2, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022D1FBE0730(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 9a49a2d..8ded1e1 100644
--- a/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020B8267EF30(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000177447AFBD0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.fxc.hlsl
index da3df09..74a6a8b 100644
--- a/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 2, 4> u = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x00000210519FF970(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 7026747..c2be23e 100644
--- a/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000251CFE1DE20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DCF81EB0E0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.fxc.hlsl
index 4c5201b..0ecb0f3 100644
--- a/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float2x4 v = float2x4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018A6592B0C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 28d71e2..b4f94e0 100644
--- a/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018C975FF9C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F7E536B720(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.fxc.hlsl
index be1f3bc..58c53a2 100644
--- a/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 2, 4> v = matrix<float16_t, 2, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BAD1284050(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 6f9207d..398c4a4 100644
--- a/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat2x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000216AA276D90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BF346E0780(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.fxc.hlsl
index 0966d1b..26ce26b 100644
--- a/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 3, 2> tint_symbol = m();
+  matrix<float16_t, 3, 2> tint_symbol = m();
   float3x2 v = float3x2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024EBE5AB0E0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index 4ec56bd..04904dd 100644
--- a/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C27D8C9710(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000015A66D65330(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.fxc.hlsl
index 0ba26c0..a31a9f0 100644
--- a/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float3x2 tint_symbol = m();
+  float3x2 tint_symbol = m();
   matrix<float16_t, 3, 2> v = matrix<float16_t, 3, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000229D08AFEA0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 0a8dee0..8e85ae1 100644
--- a/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BD436ADA60(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002400B5682F0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.fxc.hlsl
index 41b07e0..0224d64 100644
--- a/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 3, 2> u = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 2>(float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 2>(float16_t(5.0h), float16_t(6.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E42C2E84A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 7c33c45..89247cc 100644
--- a/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028A28179320(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000029F3610F980(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.fxc.hlsl
index 5ad6db7..9817351 100644
--- a/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float3x2 v = float3x2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001985D52FEA0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 879a98f..f3e2fcb 100644
--- a/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020DB91F90C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D543DBFBC0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.fxc.hlsl
index 1c7b7fc..1b35940 100644
--- a/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 3, 2> v = matrix<float16_t, 3, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002379ED842B0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 1899278..bc4b148 100644
--- a/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002390FA79410(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D28DDD0000(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.fxc.hlsl
index d2b71cc..d18bf3e 100644
--- a/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 3, 3> tint_symbol = m();
+  matrix<float16_t, 3, 3> tint_symbol = m();
   float3x3 v = float3x3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019348C85BE0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index af726fd..ba7948e 100644
--- a/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002534B5906B0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002215BF44D00(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.fxc.hlsl
index 7940b57..414de34 100644
--- a/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float3x3 tint_symbol = m();
+  float3x3 tint_symbol = m();
   matrix<float16_t, 3, 3> v = matrix<float16_t, 3, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000223859641D0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 2c5bbd9..29cada6 100644
--- a/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002107AA09240(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023AE4BAB0E0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.fxc.hlsl
index ab64d60..5c1e0c1 100644
--- a/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 3, 3> u = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B66AED8F90(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 2ce3ec9..156c1bb 100644
--- a/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020768C59200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000217B68AB130(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.fxc.hlsl
index bb46c81..2b36029 100644
--- a/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float3x3 v = float3x3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000172E846B830(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index c29eb28..9937899 100644
--- a/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023B046E02B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000191846E6810(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.fxc.hlsl
index d9d45b7..9d4d336 100644
--- a/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 3, 3> v = matrix<float16_t, 3, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000251E310FA70(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 5f4cb18..536e497 100644
--- a/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B10D75E6D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000266118A41A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.fxc.hlsl
index 2339b2c..51449df 100644
--- a/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 3, 4> tint_symbol = m();
+  matrix<float16_t, 3, 4> tint_symbol = m();
   float3x4 v = float3x4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001DF4FEAFEE0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index 19dfedf..112ed3f 100644
--- a/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CC59680080(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F41F693C80(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.fxc.hlsl
index 60e79c6..a88d8a0 100644
--- a/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float3x4 tint_symbol = m();
+  float3x4 tint_symbol = m();
   matrix<float16_t, 3, 4> v = matrix<float16_t, 3, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000197630AAF90(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 4fba8c6..3b464a7 100644
--- a/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000259E4AF9210(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000284C0D60CF0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.fxc.hlsl
index 072b96d..8f0e0cb 100644
--- a/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 3, 4> u = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 4>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h), float16_t(12.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x00000226E7897470(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 0d5bc1c..9b52c90 100644
--- a/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000282305B0090(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001887117CFC0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.fxc.hlsl
index 0ad32aa..f9b6c0b 100644
--- a/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float3x4 v = float3x4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001163D5CFA70(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index a4d0663..c587160 100644
--- a/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024169EBDE70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000245460A0A50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.fxc.hlsl
index fb69b54..ba21c66 100644
--- a/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 3, 4> v = matrix<float16_t, 3, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A610E3B0C0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 01ba610..c6c202b 100644
--- a/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat3x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026B6EA29390(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B011B638B0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.fxc.hlsl
index da029f4..c76a5f0 100644
--- a/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 4, 2> tint_symbol = m();
+  matrix<float16_t, 4, 2> tint_symbol = m();
   float4x2 v = float4x2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C164D6E8B0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index e69661b..467e786 100644
--- a/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B4C069ECC0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023F1767B170(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.fxc.hlsl
index f079218..f106b16 100644
--- a/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float4x2 tint_symbol = m();
+  float4x2 tint_symbol = m();
   matrix<float16_t, 4, 2> v = matrix<float16_t, 4, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000171C434FE00(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index bc40275..bffcf1f 100644
--- a/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AC5737FAD0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000210F6F7A830(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.fxc.hlsl
index e492db3..3184b70 100644
--- a/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 4, 2> u = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 2>(float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 2>(float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 2>(float16_t(7.0h), float16_t(8.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x000002D0529F0020(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 132be53..9fbd421 100644
--- a/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000276E1ECF4A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014C6003F9C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.fxc.hlsl
index 490bada..dabcb9c 100644
--- a/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float4x2 v = float4x2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024A00690810(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 0e6028d..904b310 100644
--- a/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000204CD0CD9B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BDB3C5B890(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.fxc.hlsl
index bb0564b..45e350c 100644
--- a/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 4, 2> v = matrix<float16_t, 4, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002862E027920(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 59d26ca..3a3e356 100644
--- a/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D32C83EE30(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002F381D34070(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.fxc.hlsl
index 4c5d5d5..533670d 100644
--- a/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 4, 3> tint_symbol = m();
+  matrix<float16_t, 4, 3> tint_symbol = m();
   float4x3 v = float4x3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002ABA1F8E8A0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index 2895840..6a80354 100644
--- a/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011E2D93F7B0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002589541BA10(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.fxc.hlsl
index fd96078..011b70c 100644
--- a/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float4x3 tint_symbol = m();
+  float4x3 tint_symbol = m();
   matrix<float16_t, 4, 3> v = matrix<float16_t, 4, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000153070545C0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 739b663..8221060 100644
--- a/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224E3C9DE70(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002112C915040(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.fxc.hlsl
index eecefef..f92495e 100644
--- a/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 4, 3> u = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 3>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h)), vector<float16_t, 3>(float16_t(7.0h), float16_t(8.0h), float16_t(9.0h)), vector<float16_t, 3>(float16_t(10.0h), float16_t(11.0h), float16_t(12.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023E5D675AA0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 16d5406..160191c 100644
--- a/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A069599350(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D659054F50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.fxc.hlsl
index 2defbe4..0a8f41e 100644
--- a/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float4x3 v = float4x3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025804D58FA0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 49977fd..43e1e81 100644
--- a/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FF8F95A3B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000218045403A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.fxc.hlsl
index 517eeb2..206f2c6 100644
--- a/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 4, 3> v = matrix<float16_t, 4, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A86F860720(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index ec02990..3a8f7d2 100644
--- a/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018B5F29DF20(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000013DB5F343A0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.fxc.hlsl
index f095d83..708f98c 100644
--- a/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const matrix<float16_t, 4, 4> tint_symbol = m();
+  matrix<float16_t, 4, 4> tint_symbol = m();
   float4x4 v = float4x4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000116B273D370(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index c37c992..a2ea28e 100644
--- a/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B0163A2CF0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023FBD0654D0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.fxc.hlsl
index 6344b7f..2957c23 100644
--- a/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float4x4 tint_symbol = m();
+  float4x4 tint_symbol = m();
   matrix<float16_t, 4, 4> v = matrix<float16_t, 4, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000262C81DE080(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 7847261..f933363 100644
--- a/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD09F60060(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000147DCFEB0E0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.fxc.hlsl
index f3f9bc3..69855ab 100644
--- a/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static matrix<float16_t, 4, 4> u = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h), float16_t(4.0h)), vector<float16_t, 4>(float16_t(5.0h), float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 4>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h), float16_t(12.0h)), vector<float16_t, 4>(float16_t(13.0h), float16_t(14.0h), float16_t(15.0h), float16_t(16.0h)));
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FDA92CC260(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 31f8311..bd8d422 100644
--- a/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F196CEF9A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B7E2617B20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.fxc.hlsl
index dd10555..1f94b69 100644
--- a/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   float4x4 v = float4x4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002190FA538C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index fefad78..460ca13 100644
--- a/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000240EC879220(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AAADF5B8F0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.fxc.hlsl
index 71b8bdd..76e2317 100644
--- a/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -10,3 +10,6 @@
 void f() {
   matrix<float16_t, 4, 4> v = matrix<float16_t, 4, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A6A89AF9E0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 6d2b9e9..7ffa80a 100644
--- a/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/mat4x4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FA2C059F50(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A7D3BCB8D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.fxc.hlsl
index 678ec32..ffb5149 100644
--- a/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,10 @@
 }
 
 void f() {
-  const bool tint_symbol = m();
+  bool tint_symbol = m();
   float16_t v = float16_t(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C5748C6760(15,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002C5748C6760(15,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.fxc.hlsl
index b252d2e..7df08b5 100644
--- a/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021699710A70(9,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000021699710A70(9,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x0000029126C70D60(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000029126C70D60(9,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.fxc.hlsl
index e8723e1..00b16f8 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float16_t tint_symbol = m();
+  float16_t tint_symbol = m();
   bool v = bool(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002584AD8B720(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.fxc.hlsl
index 931272f..79f8104 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F06ABF1F60(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002CF783D2540(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.fxc.hlsl
index 0c32e44..13aadb6 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float16_t tint_symbol = m();
+  float16_t tint_symbol = m();
   float v = float(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002547F4B4DC0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index cb4484c..83bd9bf 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000181063D3290(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000202F4AE2980(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.fxc.hlsl
index 30e8331..acaa2fc 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float16_t tint_symbol = m();
+  float16_t tint_symbol = m();
   int v = int(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027C6C9D3E00(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.fxc.hlsl
index 8b5d39c..986fd81 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025FF42194C0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000012FD90EFDE0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.fxc.hlsl
index c7aa781..8fa7b3b 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float16_t tint_symbol = m();
+  float16_t tint_symbol = m();
   uint v = uint(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019DBAA1FD80(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.fxc.hlsl
index 7fd952b..9e244bd 100644
--- a/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023D411FF6F0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002BF2BD90B10(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.fxc.hlsl
index f726dfe..2f61ea4 100644
--- a/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,10 @@
 }
 
 void f() {
-  const float tint_symbol = m();
+  float tint_symbol = m();
   float16_t v = float16_t(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000296C5376650(15,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000296C5376650(15,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 44cde38..316894e 100644
--- a/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023AF1C4F370(9,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000023AF1C4F370(9,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x0000018946914450(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000018946914450(9,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.fxc.hlsl
index cd14b08..d7ffb36 100644
--- a/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,10 @@
 }
 
 void f() {
-  const int tint_symbol = m();
+  int tint_symbol = m();
   float16_t v = float16_t(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000182D9E420F0(15,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000182D9E420F0(15,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.fxc.hlsl
index 66a862d..49f2995 100644
--- a/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D767F6ADA0(9,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001D767F6ADA0(9,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x000002896A95EE50(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002896A95EE50(9,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.fxc.hlsl
index 062d9f6..4857bff 100644
--- a/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,10 @@
 }
 
 void f() {
-  const uint tint_symbol = m();
+  uint tint_symbol = m();
   float16_t v = float16_t(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F609F82CA0(15,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001F609F82CA0(15,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.fxc.hlsl
index e0c6baf..3a9be74 100644
--- a/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/function/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F3916CFB80(9,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000001F3916CFB80(9,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x0000028CB40960A0(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000028CB40960A0(9,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.fxc.hlsl
index fc506c1..5ed4499 100644
--- a/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static float16_t u = float16_t(1.0h);
+FXC validation failure:
+C:\src\dawn\Shader@0x000002815FE66110(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
index 6b70023..3909e1d 100644
--- a/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BBDE9A99E0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FD404EB180(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.fxc.hlsl
index fc506c1..d1473af 100644
--- a/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static float16_t u = float16_t(1.0h);
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024BB5946340(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index a39ed1b..84be6ed 100644
--- a/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A1AD4DB750(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000182CECAA7A0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.fxc.hlsl
index fc506c1..1fa48d6 100644
--- a/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static float16_t u = float16_t(1.0h);
+FXC validation failure:
+C:\src\dawn\Shader@0x00000214E76D6130(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
index 4f6e9df..e238b50 100644
--- a/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001918D7AA860(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D7C678AE60(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.fxc.hlsl
index fc506c1..d15b24d 100644
--- a/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static float16_t u = float16_t(1.0h);
+FXC validation failure:
+C:\src\dawn\Shader@0x00000240FC956970(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
index a108595..325b589 100644
--- a/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D75262AAB0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000029866E40E30(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.fxc.hlsl
index 12e11d2..d0fca87 100644
--- a/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,9 @@
 static bool u = true;
 
 void f() {
-  const float16_t v = float16_t(u);
+  float16_t v = float16_t(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002781C1909D0(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002781C1909D0(9,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.fxc.hlsl
index ca01221..dfb4e00 100644
--- a/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022F106B3C90(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000022F106B3C90(4,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x00000289B04E7F60(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000289B04E7F60(4,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.fxc.hlsl
index 715f751..abb2e9f 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float16_t u = float16_t(1.0h);
 
 void f() {
-  const bool v = bool(u);
+  bool v = bool(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029A3F2B87B0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.fxc.hlsl
index 60ae175..bcd5560 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019CA88018A0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000246F25C5510(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.fxc.hlsl
index edfdc82..ddfb99a 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float16_t u = float16_t(1.0h);
 
 void f() {
-  const float v = float(u);
+  float v = float(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000224E6AD5E80(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 525fcad..e4ac3b8 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000271581CFBA0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001AC70DF5710(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.fxc.hlsl
index 8c8eae7..239efdc 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float16_t u = float16_t(1.0h);
 
 void f() {
-  const int v = int(u);
+  int v = int(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C6030F4430(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.fxc.hlsl
index d6f7ac6..b0afcec 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001733E99DE70(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023E4544FFF0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.fxc.hlsl
index 9cdd3b4..0e1ff11 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float16_t u = float16_t(1.0h);
 
 void f() {
-  const uint v = uint(u);
+  uint v = uint(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025E5FDC4950(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.fxc.hlsl
index 550911a..606dc6d 100644
--- a/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001564A2791C0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000211367E0300(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.fxc.hlsl
index da1cac2..a054c28 100644
--- a/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,9 @@
 static float u = 1.0f;
 
 void f() {
-  const float16_t v = float16_t(u);
+  float16_t v = float16_t(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B952550980(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B952550980(9,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 7e56c07..02961c3 100644
--- a/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B297F9C730(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x000002B297F9C730(4,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x0000022CE9B609F0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000022CE9B609F0(4,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.fxc.hlsl
index dd82914..aca4d965 100644
--- a/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,9 @@
 static int u = 1;
 
 void f() {
-  const float16_t v = float16_t(u);
+  float16_t v = float16_t(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D609400980(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001D609400980(9,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.fxc.hlsl
index d8b9757..7dbded4 100644
--- a/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000208DA33AFB0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000208DA33AFB0(4,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x000001EB8A2909F0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001EB8A2909F0(4,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.fxc.hlsl
index 4477cc6..78e95ab 100644
--- a/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,9 @@
 static uint u = 1u;
 
 void f() {
-  const float16_t v = float16_t(u);
+  float16_t v = float16_t(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000218582B09D0(9,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000218582B09D0(9,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.fxc.hlsl
index fa72384..3e6b175 100644
--- a/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/scalar/var/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,6 +11,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000151CC81CEB0(4,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x00000151CC81CEB0(4,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x000001FA34C46ED0(4,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001FA34C46ED0(4,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.fxc.hlsl
index 1192fc7..9e31d22 100644
--- a/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const bool2 tint_symbol = m();
+  bool2 tint_symbol = m();
   vector<float16_t, 2> v = vector<float16_t, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000161EB49FF00(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.fxc.hlsl
index 20c6db5..910333e 100644
--- a/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002282F921AC0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B564092540(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.fxc.hlsl
index 2cd41d9..040885c 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 2> tint_symbol = m();
+  vector<float16_t, 2> tint_symbol = m();
   bool2 v = bool2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001EEF730B170(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.fxc.hlsl
index c04bc80..0c97afa 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DE650FDCD0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021129364210(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.fxc.hlsl
index 10f9cdb..c9f7e61 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 2> tint_symbol = m();
+  vector<float16_t, 2> tint_symbol = m();
   float2 v = float2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023765C55050(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index 3eb11a9..8639967 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EC146DF9E0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E659253390(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.fxc.hlsl
index 94472f9..f27e5d7 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 2> tint_symbol = m();
+  vector<float16_t, 2> tint_symbol = m();
   int2 v = int2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020721951B30(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.fxc.hlsl
index 1725c1d..5912f40 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029680ACF6F0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000276424B38B0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.fxc.hlsl
index d0f5dd5..c35c0f0 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 2> tint_symbol = m();
+  vector<float16_t, 2> tint_symbol = m();
   uint2 v = uint2(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000155F7AFFCE0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.fxc.hlsl
index caa4287..981959b 100644
--- a/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000218A504F6F0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001BCF37B38F0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.fxc.hlsl
index a8fdd2e..d38467e0 100644
--- a/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float2 tint_symbol = m();
+  float2 tint_symbol = m();
   vector<float16_t, 2> v = vector<float16_t, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000167840EFDC0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 9fc9eff..d6a6298 100644
--- a/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016B68CB1C10(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A283402A90(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.fxc.hlsl
index 44c9bd7..b70857d 100644
--- a/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const int2 tint_symbol = m();
+  int2 tint_symbol = m();
   vector<float16_t, 2> v = vector<float16_t, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028D9A413470(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.fxc.hlsl
index 6302b04..f1d0eaf 100644
--- a/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002379AF09150(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D194464740(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.fxc.hlsl
index 50445e5..eb953ba 100644
--- a/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const uint2 tint_symbol = m();
+  uint2 tint_symbol = m();
   vector<float16_t, 2> v = vector<float16_t, 2>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001817ACC37F0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.fxc.hlsl
index b9b18d3..136044a 100644
--- a/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/function/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B32F3FDE20(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A83A851050(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.fxc.hlsl
index c2afd91..3ceb2f3 100644
--- a/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E601108A70(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
index 189416c..69ab7d6 100644
--- a/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002568DF40A10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F6A55161C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.fxc.hlsl
index c2afd91..31dd6d8 100644
--- a/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000001AE1A3F5E80(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 7148d67..20b9a8e 100644
--- a/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018EB878FCF0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021831395FE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.fxc.hlsl
index c2afd91..5fc8d3f 100644
--- a/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022A1F345E80(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
index 604ec6c..8256a25 100644
--- a/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023A5D260130(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000244E26E6AB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.fxc.hlsl
index c2afd91..85f5c35 100644
--- a/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FD2D7980C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
index 84576dd..32c9154 100644
--- a/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C044EFAC0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000211A13D6CF0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.fxc.hlsl
index 4d9ad80..097d463 100644
--- a/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static bool2 u = (true).xx;
 
 void f() {
-  const vector<float16_t, 2> v = vector<float16_t, 2>(u);
+  vector<float16_t, 2> v = vector<float16_t, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016E08D087A0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.fxc.hlsl
index d478041..e480bfb 100644
--- a/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029707EAADA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F8025187D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.fxc.hlsl
index 78c6cd4..40363ee 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
 
 void f() {
-  const bool2 v = bool2(u);
+  bool2 v = bool2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002731BDF77E0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.fxc.hlsl
index 065978b..f97a0eb 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F79C33ADA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014E21C45E90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.fxc.hlsl
index 0fdee11..3207dfb 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
 
 void f() {
-  const float2 v = float2(u);
+  float2 v = float2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000256EB320930(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 96c8e49..289605c 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000261DBE61670(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015A6E6577C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.fxc.hlsl
index 62a73b8..6763b3a 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
 
 void f() {
-  const int2 v = int2(u);
+  int2 v = int2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001747A490930(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.fxc.hlsl
index f017dff..98d3258 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D6A17DE10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021547BAE2C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.fxc.hlsl
index a1ac83f..d52482b 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 2> u = (float16_t(1.0h)).xx;
 
 void f() {
-  const uint2 v = uint2(u);
+  uint2 v = uint2(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001997EC480B0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.fxc.hlsl
index 4e500ee..439b82a 100644
--- a/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002314E159200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E441330C80(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.fxc.hlsl
index f8e969e..490a708 100644
--- a/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float2 u = (1.0f).xx;
 
 void f() {
-  const vector<float16_t, 2> v = vector<float16_t, 2>(u);
+  vector<float16_t, 2> v = vector<float16_t, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002882F605420(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index cd1144a..3b5d9c0 100644
--- a/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B248ED0E60(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000253DBF387C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.fxc.hlsl
index 266e024..5a9efcf 100644
--- a/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static int2 u = (1).xx;
 
 void f() {
-  const vector<float16_t, 2> v = vector<float16_t, 2>(u);
+  vector<float16_t, 2> v = vector<float16_t, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000237BC110970(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.fxc.hlsl
index 9d7c250..88797a3 100644
--- a/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000173900C0E60(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE032009E0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.fxc.hlsl
index 3b72afa..03f741f 100644
--- a/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static uint2 u = (1u).xx;
 
 void f() {
-  const vector<float16_t, 2> v = vector<float16_t, 2>(u);
+  vector<float16_t, 2> v = vector<float16_t, 2>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002104E5D5420(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.fxc.hlsl
index 496f8dd..bde3cba 100644
--- a/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec2/var/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E8505F0E60(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DB869F80D0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.fxc.hlsl
index df95d8c..e54cd5d 100644
--- a/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const bool3 tint_symbol = m();
+  bool3 tint_symbol = m();
   vector<float16_t, 3> v = vector<float16_t, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002C85D0DB170(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.fxc.hlsl
index dbdbf4a..dd9439b 100644
--- a/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021A08581AC0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020970D32210(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.fxc.hlsl
index 01f50cb..aca28f0 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 3> tint_symbol = m();
+  vector<float16_t, 3> tint_symbol = m();
   bool3 v = bool3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002B8ADA9F840(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.fxc.hlsl
index 32454a4..e5ab581 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023BAE9D9200(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000021712ACFA40(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.fxc.hlsl
index 34d2d23..46a75f0 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 3> tint_symbol = m();
+  vector<float16_t, 3> tint_symbol = m();
   float3 v = float3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000147AC091880(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index 7d27868..56ad87b 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FACDBDFD80(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000015013102590(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.fxc.hlsl
index df43267..b9886bb 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 3> tint_symbol = m();
+  vector<float16_t, 3> tint_symbol = m();
   int3 v = int3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F7CBACFCE0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.fxc.hlsl
index bf82b61..2a63ea9 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000218D236F6F0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001BC62A18840(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.fxc.hlsl
index 177dc3a..1a97bf7 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 3> tint_symbol = m();
+  vector<float16_t, 3> tint_symbol = m();
   uint3 v = uint3(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A167725050(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.fxc.hlsl
index ab0ffad..5b5041c 100644
--- a/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000220F54CEC90(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000271EB0CD190(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.fxc.hlsl
index 8538ab6..8a5f9a8 100644
--- a/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float3 tint_symbol = m();
+  float3 tint_symbol = m();
   vector<float16_t, 3> v = vector<float16_t, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000146F0F3B150(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 1685b1a..c7fa138 100644
--- a/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000192048C1B40(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C20D2D2540(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.fxc.hlsl
index b127e08..865c98b 100644
--- a/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const int3 tint_symbol = m();
+  int3 tint_symbol = m();
   vector<float16_t, 3> v = vector<float16_t, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020F55F33B90(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.fxc.hlsl
index e911c71..5cb848d 100644
--- a/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000203C54C2180(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000287BE711AC0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.fxc.hlsl
index eaabaff..32322b2 100644
--- a/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const uint3 tint_symbol = m();
+  uint3 tint_symbol = m();
   vector<float16_t, 3> v = vector<float16_t, 3>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000181757542B0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.fxc.hlsl
index d3465f2..9f8a2a9 100644
--- a/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/function/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C180F1080(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002175FF92980(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.fxc.hlsl
index aa68910..44e5abb 100644
--- a/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x00000254445980C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
index 4868d69..80eca08 100644
--- a/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E4E53B0DE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A3BE6E6570(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.fxc.hlsl
index aa68910..d0a8c9b 100644
--- a/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021275FD5E80(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index 64babef..c50573c 100644
--- a/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019DA84D0060(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000200F0276A20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.fxc.hlsl
index aa68910..7a36c69 100644
--- a/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000002801B5E80C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
index ca45139..0b5a839 100644
--- a/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002384D71FEA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FC05846AE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.fxc.hlsl
index aa68910..02f9334 100644
--- a/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x00000213CD2A92A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
index 9b6cf2f..25a2f15 100644
--- a/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023442C10D90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000250D23F76A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.fxc.hlsl
index 7ee9ea8..8eddce9 100644
--- a/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static bool3 u = (true).xxx;
 
 void f() {
-  const vector<float16_t, 3> v = vector<float16_t, 3>(u);
+  vector<float16_t, 3> v = vector<float16_t, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029887735400(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.fxc.hlsl
index ee27e3d..2387e27 100644
--- a/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027E5C4BC600(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017AFCCF80E0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.fxc.hlsl
index 7fd35e33..8629e8c 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
 
 void f() {
-  const bool3 v = bool3(u);
+  bool3 v = bool3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026432F787A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.fxc.hlsl
index b5ab5a1..c0b592c 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000211A142ADA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BF9D4A87D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.fxc.hlsl
index 3b4849a..75e22c1 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
 
 void f() {
-  const float3 v = float3(u);
+  float3 v = float3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026EC4235D20(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index b8e5450..10cd652 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028AA3EDAD90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000281640D5E80(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.fxc.hlsl
index 30a25c3..2373ad6 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
 
 void f() {
-  const int3 v = int3(u);
+  int3 v = int3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002F76AAF0970(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.fxc.hlsl
index 0354c4d..d61c32e 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BB45509200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028AEFA00CD0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.fxc.hlsl
index cf2e63d..6c810a0 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 3> u = (float16_t(1.0h)).xxx;
 
 void f() {
-  const uint3 v = uint3(u);
+  uint3 v = uint3(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000220F8EF87A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.fxc.hlsl
index 8b4a3dc..ad0bfe5 100644
--- a/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C0475297D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000156F8D4FA90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.fxc.hlsl
index 6c49177..2e08a45 100644
--- a/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float3 u = (1.0f).xxx;
 
 void f() {
-  const vector<float16_t, 3> v = vector<float16_t, 3>(u);
+  vector<float16_t, 3> v = vector<float16_t, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F7551765E0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index aa806ec..b043c93 100644
--- a/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FEDC9EAFA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000172AEB909E0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.fxc.hlsl
index 6ef2305..33b73f1 100644
--- a/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static int3 u = (1).xxx;
 
 void f() {
-  const vector<float16_t, 3> v = vector<float16_t, 3>(u);
+  vector<float16_t, 3> v = vector<float16_t, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002AF74EE3280(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.fxc.hlsl
index 12ce75e..94ed519 100644
--- a/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E780CFAD90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000243ABA087C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.fxc.hlsl
index 4d00fa8..d8d9b3c 100644
--- a/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static uint3 u = (1u).xxx;
 
 void f() {
-  const vector<float16_t, 3> v = vector<float16_t, 3>(u);
+  vector<float16_t, 3> v = vector<float16_t, 3>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CBBCBC87A0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.fxc.hlsl
index 7ce3390..7e31b2a 100644
--- a/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec3/var/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028EC8D8AD90(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000163F5945500(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.fxc.hlsl
index 8785a91..3659213 100644
--- a/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const bool4 tint_symbol = m();
+  bool4 tint_symbol = m();
   vector<float16_t, 4> v = vector<float16_t, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E475F50020(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.fxc.hlsl
index 9f8d155..4c6a4ef 100644
--- a/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001AD31221750(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A483512BA0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.fxc.hlsl
index 583f9f6..a5d1f40 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 4> tint_symbol = m();
+  vector<float16_t, 4> tint_symbol = m();
   bool4 v = bool4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000257AA2EFCE0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.fxc.hlsl
index f03c66d..33d1b58 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000123BA81F490(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002AAD6333BE0(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.fxc.hlsl
index e7ef7d5..f6f18c3 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 4> tint_symbol = m();
+  vector<float16_t, 4> tint_symbol = m();
   float4 v = float4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000234F7A36C00(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
index b255f44..bd512c2 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002859BBFE810(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001BBB2BC3860(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.fxc.hlsl
index df89247..01c5f31 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 4> tint_symbol = m();
+  vector<float16_t, 4> tint_symbol = m();
   int4 v = int4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F2207803B0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.fxc.hlsl
index 6ccea7a..c947b68 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A316FB92C0(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E46B16B170(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.fxc.hlsl
index da8639c..41f6524 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const vector<float16_t, 4> tint_symbol = m();
+  vector<float16_t, 4> tint_symbol = m();
   uint4 v = uint4(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001675E6403B0(6,8-16): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.fxc.hlsl
index 78eaf0a..a352121 100644
--- a/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027013CEF420(2,8-16): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E7B612AF30(2,8-16): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.fxc.hlsl
index a57362d..2af39b8 100644
--- a/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const float4 tint_symbol = m();
+  float4 tint_symbol = m();
   vector<float16_t, 4> v = vector<float16_t, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001405770FC50(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
index 2a82eb9..ba62149 100644
--- a/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002427BF11190(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014154F22980(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.fxc.hlsl
index 56fca67..af9be89 100644
--- a/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const int4 tint_symbol = m();
+  int4 tint_symbol = m();
   vector<float16_t, 4> v = vector<float16_t, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025D14963470(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.fxc.hlsl
index 905e263..2badb0e 100644
--- a/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020463E712F0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023A44C4FC00(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.fxc.hlsl
index f752da2..215839d 100644
--- a/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.fxc.hlsl
@@ -13,6 +13,9 @@
 }
 
 void f() {
-  const uint4 tint_symbol = m();
+  uint4 tint_symbol = m();
   vector<float16_t, 4> v = vector<float16_t, 4>(tint_symbol);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000242E9073AF0(15,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.fxc.hlsl
index fcc1a2a..9325d7c 100644
--- a/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/function/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EC48200B30(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028752972A90(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.fxc.hlsl
index 38006b7..2869d0c8 100644
--- a/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000002628B444470(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
index 7409373..e98359e 100644
--- a/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000233D37BF8D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000246371D6170(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.fxc.hlsl
index 38006b7..5d9f268 100644
--- a/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A74E175E80(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
index ea595ec..2b5c456 100644
--- a/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F47EB7F560(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DAC84B6500(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.fxc.hlsl
index 38006b7..3d50741 100644
--- a/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014448A26170(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
index f2d7c08..e90722a 100644
--- a/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029E54930820(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019F3F896F50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.fxc.hlsl
index 38006b7..3959a2d 100644
--- a/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C556C380C0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
index 1ea1a24c..7b9c632 100644
--- a/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/literal/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022304D1F790(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CEABF55E50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.fxc.hlsl
index 5e5bd00..ad02cb2 100644
--- a/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static bool4 u = (true).xxxx;
 
 void f() {
-  const vector<float16_t, 4> v = vector<float16_t, 4>(u);
+  vector<float16_t, 4> v = vector<float16_t, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001546821FE50(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.fxc.hlsl
index 5e239ba..855533b 100644
--- a/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/bool-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BD77ECAFB0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001AFEAED6610(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.fxc.hlsl
index d97c0d2..3156f8c 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
 
 void f() {
-  const bool4 v = bool4(u);
+  bool4 v = bool4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024E514187A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.fxc.hlsl
index 080d819..9ce88b9 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-bool.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A1008CADA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A1D89587D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.fxc.hlsl
index eae465b..7d2a87b 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
 
 void f() {
-  const float4 v = float4(u);
+  float4 v = float4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000253BF1D87A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
index 10ede29..e28ab12 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-f32.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022E7AD4AD90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000026B01F987C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.fxc.hlsl
index 3d4b0a3..d9b60a8 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
 
 void f() {
-  const int4 v = int4(u);
+  int4 v = int4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024C55FB0930(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.fxc.hlsl
index bc0756a..b046f98 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-i32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B6013FDD60(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000222FDEEF9A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.fxc.hlsl
index 5562508..45ea42f 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static vector<float16_t, 4> u = (float16_t(1.0h)).xxxx;
 
 void f() {
-  const uint4 v = uint4(u);
+  uint4 v = uint4(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023B79CDE610(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.fxc.hlsl
index eb1addb..c0c7132 100644
--- a/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f16-u32.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027F7D239200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002A4C05DFE30(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.fxc.hlsl
index 63dbc39..80c3188 100644
--- a/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static float4 u = (1.0f).xxxx;
 
 void f() {
-  const vector<float16_t, 4> v = vector<float16_t, 4>(u);
+  vector<float16_t, 4> v = vector<float16_t, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FEEC6F4940(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
index 423cdc5..e2b7456 100644
--- a/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/f32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CE0BCFAFA0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E2003D6890(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.fxc.hlsl
index 307f250..eb14d46 100644
--- a/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static int4 u = (1).xxxx;
 
 void f() {
-  const vector<float16_t, 4> v = vector<float16_t, 4>(u);
+  vector<float16_t, 4> v = vector<float16_t, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C110987A0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.fxc.hlsl
index 6a99bb6..b530e2d 100644
--- a/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/i32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F93E2428F0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002442AEDB2B0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.fxc.hlsl
index 4d54ab4..765585b 100644
--- a/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.fxc.hlsl
@@ -8,5 +8,8 @@
 static uint4 u = (1u).xxxx;
 
 void f() {
-  const vector<float16_t, 4> v = vector<float16_t, 4>(u);
+  vector<float16_t, 4> v = vector<float16_t, 4>(u);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BCF14E0930(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.fxc.hlsl
index 73073a0..1fdfc19 100644
--- a/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_conv/vec4/var/u32-f16.wgsl.expected.ir.fxc.hlsl
@@ -11,5 +11,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B7C2411820(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B5A4CC77C0(4,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
index 7b064f9..ce7ba47 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,18 @@
 SKIP: FAILED
 
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 2, 2>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002448F324C60(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
-
-matrix<float16_t, 2, 2> f() {
-  const matrix<float16_t, 2, 2> m_1 = matrix<float16_t, 2, 2>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index 46f20bb..7016c6b 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000243BFE62D10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B35008E090(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index a03b5ac..dc9f7a1 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
 }
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BDCC74FFA0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index aa8f169..1f6500b 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015E6173F7D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D768A0FB40(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index a03b5ac..0b92c5b 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
 }
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001927D0BC730(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 00cb502..5579a43 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002926B43E320(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000209DA7E4020(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
index 7b064f9..43edfa8 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,18 @@
 SKIP: FAILED
 
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 2, 2>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A8FCDE3CB0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
-
-matrix<float16_t, 2, 2> f() {
-  const matrix<float16_t, 2, 2> m_1 = matrix<float16_t, 2, 2>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index f2f5547..64929ea 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D2B07C1480(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C3D7D8D10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index a03b5ac..c279342 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
 }
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002262DE94D00(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 98748ac..a1d6ccd 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BB21C09770(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A1F2976F60(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index a03b5ac..aea7bf0 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
 }
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028AED2DBC10(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index f184a3a..fb7449f 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022589EFFA00(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019C3597AFE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.fxc.hlsl
index e9f39c6..b343f97 100644
--- a/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-  const matrix<float16_t, 2, 2> m_1 = matrix<float16_t, 2, 2>(m);
+  tint_symbol_store(0u, matrix<float16_t, 2, 2>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017659C5FC80(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000017659C5FC80(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.fxc.hlsl
index c2b2674..a7bf994 100644
--- a/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,6 +14,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011B6F83A1C0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000011B6F83A1C0(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x00000133CAB6B1B0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000133CAB6B1B0(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.fxc.hlsl
index 4bb1e3a..accbb4d 100644
--- a/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
 }
 
-static matrix<float16_t, 2, 2> m = matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CABFF74540(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.fxc.hlsl
index f7601fa..7f83e8b 100644
--- a/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C9AE0D67E0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A7776DFFE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
index c282647..49b41f0 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,18 @@
 SKIP: FAILED
 
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 2, 3>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D954180600(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
-
-matrix<float16_t, 2, 3> f() {
-  const matrix<float16_t, 2, 3> m_1 = matrix<float16_t, 2, 3>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index f554b40..13bcc81 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BF360D9440(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000020C5C5D8FB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index 3650903..da587d2 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020AEE69D620(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 377aea8..6abbfe0 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024C022AF7D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019D66B7DCA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index 3650903..53c9a12 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000262AF9C0D60(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 721dd3d..1370a04 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CA6B72E760(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CDF6013E00(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
index c282647..7fc0e73 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,18 @@
 SKIP: FAILED
 
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 2, 3>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022BD5341EA0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
-
-matrix<float16_t, 2, 3> f() {
-  const matrix<float16_t, 2, 3> m_1 = matrix<float16_t, 2, 3>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index 3ca3102..33b59e8 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C9B95716E0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025CF6693BE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index 3650903..7adccdc 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001754B20D700(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 6ef4588..92db433 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020D4CD8F7C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014F616D53A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index 3650903..b3bb89d 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B776D207E0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index d23012e..c53002e 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021B28E201D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001DD504585B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.fxc.hlsl
index 218711a..d82afa8 100644
--- a/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-  const matrix<float16_t, 2, 3> m_1 = matrix<float16_t, 2, 3>(m);
+  tint_symbol_store(0u, matrix<float16_t, 2, 3>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000012C8259FEE0(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000012C8259FEE0(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.fxc.hlsl
index d320b1a..8f373f8 100644
--- a/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,6 +14,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020C74CC9B90(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000020C74CC9B90(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x00000183D74EB8A0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000183D74EB8A0(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.fxc.hlsl
index 8a70a8a..278e512 100644
--- a/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 3> m = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017E7DCB19F0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.fxc.hlsl
index 40364e3..2f6f2a9 100644
--- a/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027886A5DE60(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028B73740E10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
index 240183e..f5681c9 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,18 @@
 SKIP: FAILED
 
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 2, 4>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B6A6D00FB0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
-
-matrix<float16_t, 2, 4> f() {
-  const matrix<float16_t, 2, 4> m_1 = matrix<float16_t, 2, 4>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index 8270408..40d492cb 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E688CAFB70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000280BD2D3C20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index 81cbdd1..8608143 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022DB716B8D0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index e6999f0..3babe3a 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D1CBE7FB70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BFB26AB1C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index 81cbdd1..b206653 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F086793AF0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 6dea3ca..dfd8d5c 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000205F034FB70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A552AF47F0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
index 240183e..6dcc4d7 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,18 @@
 SKIP: FAILED
 
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 2, 4>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013D2FF14CC0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
-
-matrix<float16_t, 2, 4> f() {
-  const matrix<float16_t, 2, 4> m_1 = matrix<float16_t, 2, 4>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index 6012a70..43d7e46 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000167D8EDF5B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000025463C73BF0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index 81cbdd1..066a339 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A90E51FE40(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 09a9c7a..01b5253 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002432597F9C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E5DC86BBA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index 81cbdd1..167f775 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000107AC56B820(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index f77454e..9708368 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000029EA5B012B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C498B63E00(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.fxc.hlsl
index f9bf1f3..5314b41 100644
--- a/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-  const matrix<float16_t, 2, 4> m_1 = matrix<float16_t, 2, 4>(m);
+  tint_symbol_store(0u, matrix<float16_t, 2, 4>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000166E0AB4590(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000166E0AB4590(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.fxc.hlsl
index beb0f58..cee5d2b 100644
--- a/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,6 +14,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DFC55FF3C0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001DFC55FF3C0(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000027332780690(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027332780690(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.fxc.hlsl
index d0de80a..af2e1c4 100644
--- a/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,18 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 2, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
 }
 
-static matrix<float16_t, 2, 4> m = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002ABB8586E20(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.fxc.hlsl
index 2e76706..298d1b6 100644
--- a/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -14,5 +14,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000153495B96E0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000024B6A72CFB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
index e6b2ea4..494c95a 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,19 @@
 SKIP: FAILED
 
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 3, 2>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023774F6DDB0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
-
-matrix<float16_t, 3, 2> f() {
-  const matrix<float16_t, 3, 2> m_1 = matrix<float16_t, 3, 2>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index 486899d..132a761 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001616922F9C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022EE0133C10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index d40eae8..6e24d65 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
 }
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021662718120(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index c3512f9..6058d66 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000011010DCF7D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002188E95B9C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index d40eae8..407aa1b 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
 }
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F500BBFF80(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index b45e80a..cae86ad 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C5E4390DF0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E8F1B25ED0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
index e6b2ea4..cdff9b7 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,19 @@
 SKIP: FAILED
 
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 3, 2>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001199821A970(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
-
-matrix<float16_t, 3, 2> f() {
-  const matrix<float16_t, 3, 2> m_1 = matrix<float16_t, 3, 2>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index d69a739..6bd680c 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F7734C4860(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000141CBCF8FB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index d40eae8..0ed32e3 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
 }
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020B2984D620(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 6e9f96f..79c5009 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000298C3DFF7C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F56F2660A0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index d40eae8..d3ef8fc 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
 }
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C3D71D4D0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index d0e71f3..754eed6 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EF833B0430(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F511F79140(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.fxc.hlsl
index 8df684e..2da58f1 100644
--- a/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-  const matrix<float16_t, 3, 2> m_1 = matrix<float16_t, 3, 2>(m);
+  tint_symbol_store(0u, matrix<float16_t, 3, 2>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F6DB8DBA70(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F6DB8DBA70(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.fxc.hlsl
index 1635d9c..3882401 100644
--- a/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022D7D77A150(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000022D7D77A150(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000023D21FA2BA0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023D21FA2BA0(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.fxc.hlsl
index 4609496..fb73494 100644
--- a/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
 }
 
-static matrix<float16_t, 3, 2> m = matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028E8190AF90(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.fxc.hlsl
index cec0c7f..caadfd0 100644
--- a/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028EDF099F50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B71E9448F0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
index ba83be1..a709eff 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,19 @@
 SKIP: FAILED
 
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 3, 3>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000024382675CD0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
-
-matrix<float16_t, 3, 3> f() {
-  const matrix<float16_t, 3, 3> m_1 = matrix<float16_t, 3, 3>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index ff07ca3..b3dc3aa 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019E663E9690(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000266EEC7AFE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index ee1d957..9ec843f 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000257763ED5C0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 04ebe0e..05e4d43 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024FDA57F160(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001855535D280(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index ee1d957..fe2c51f 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000198A0614110(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index c5bd97d..0d80a2d 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D524841730(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B09DC25C20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
index ba83be1..a7bf0c5 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,19 @@
 SKIP: FAILED
 
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 3, 3>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A8733B5CC0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
-
-matrix<float16_t, 3, 3> f() {
-  const matrix<float16_t, 3, 3> m_1 = matrix<float16_t, 3, 3>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index 210a3a0..729939d 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021E1C9D9660(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000187531338C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index ee1d957..1cb7853 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020DCA5B5CD0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 393f589..9e4963c 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C790119380(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D9AAB39000(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index ee1d957..355b4b9 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000283842CD4E0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 9abfb0c..b7b6e64 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000179C6E2F7C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001736A659BD0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.fxc.hlsl
index 5895271..41f0a7d 100644
--- a/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-  const matrix<float16_t, 3, 3> m_1 = matrix<float16_t, 3, 3>(m);
+  tint_symbol_store(0u, matrix<float16_t, 3, 3>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000224CCD35C10(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000224CCD35C10(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.fxc.hlsl
index 225f60e..97f17ad 100644
--- a/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E1E8819500(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001E1E8819500(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001C467C00760(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C467C00760(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.fxc.hlsl
index a618943..b82980f 100644
--- a/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 3> m = matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C56B2CD510(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.fxc.hlsl
index 3c730b2..358ab08 100644
--- a/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000218244AFB70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EB793764D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
index 0791b2e..0f9a4b3 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,19 @@
 SKIP: FAILED
 
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 3, 4>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CA3F84D510(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
-
-matrix<float16_t, 3, 4> f() {
-  const matrix<float16_t, 3, 4> m_1 = matrix<float16_t, 3, 4>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index 908d8c4..84bfec5 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019E3FF4F130(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000016975533ED0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index 97fccc1..b9117ea 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020939548F50(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index fda0551..06414d0 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD9B8EF0F0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027CE2FAE050(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index 97fccc1..fed305f 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017C123EFE80(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 1490641..308a132 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000230D871EEF0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000262D25CFC10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
index 0791b2e..2f6001b 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,19 @@
 SKIP: FAILED
 
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 3, 4>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000238F0BC8360(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
-
-matrix<float16_t, 3, 4> f() {
-  const matrix<float16_t, 3, 4> m_1 = matrix<float16_t, 3, 4>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index ccdb351..676917c 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000294E05CF540(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001EE83EA5680(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index 97fccc1..752e67d 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000014C12E4D600(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 6cca442..8a9ecbd 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017725129C20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000216C18CAFE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index 97fccc1..af8bc04 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001C8D6FBFAC0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index b049a54..b7372bd 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002189623EEE0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000028942EA6E60(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.fxc.hlsl
index 0381851..7d19804bdc 100644
--- a/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-  const matrix<float16_t, 3, 4> m_1 = matrix<float16_t, 3, 4>(m);
+  tint_symbol_store(0u, matrix<float16_t, 3, 4>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BB4645FA60(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BB4645FA60(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.fxc.hlsl
index 2a05b3d..174f8a2 100644
--- a/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,6 +15,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000224354C9700(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x00000224354C9700(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002D0CE96C140(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002D0CE96C140(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.fxc.hlsl
index 8df74ee..1edcb2a 100644
--- a/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,19 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 3, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
 }
 
-static matrix<float16_t, 3, 4> m = matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000221FEA3F970(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.fxc.hlsl
index a6d5f85..31c495c 100644
--- a/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000207A4C0A200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000134C55E6320(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
index 040984a..820b3a5 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 4, 2>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D43F35BA20(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
-
-matrix<float16_t, 4, 2> f() {
-  const matrix<float16_t, 4, 2> m_1 = matrix<float16_t, 4, 2>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index e820ca5..7675600 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017BC207EF70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FAEAB52A90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index b6f8540..0392e42 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
 }
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F5F2BD38F0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 7e7a287..ffe199d 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000230351CF690(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000021B4AE21760(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index b6f8540..c6949c14 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
 }
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025A444D3B00(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 7eaf483..ff49c6d 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EA7348E650(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001F2BED64FC0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
index 040984a..ce53875 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 4, 2>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025A7308B1E0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
-
-matrix<float16_t, 4, 2> f() {
-  const matrix<float16_t, 4, 2> m_1 = matrix<float16_t, 4, 2>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index 9bd3c32..df50748 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000279E023FB70(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002369E888FB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index b6f8540..b4b1640 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
 }
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A94FB9BB10(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 8fca60e..3ad6c02 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C345AAF7C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D8E9DE5A50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index b6f8540..c7988e1 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
 }
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>(vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h)), vector<float16_t, 2>(float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 2>(float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 2>(float16_t(6.0h), float16_t(7.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018A247E6620(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index e1922be..1883baf 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000175EB7924C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022159A5B920(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.fxc.hlsl
index 6429ca0..018a0aa 100644
--- a/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,21 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
-  const matrix<float16_t, 4, 2> m_1 = matrix<float16_t, 4, 2>(m);
+  tint_symbol_store(0u, matrix<float16_t, 4, 2>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022019755E50(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022019755E50(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.fxc.hlsl
index 3a16cea..01364f7 100644
--- a/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028D7F46F7B0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000028D7F46F7B0(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x0000015E03F48DE0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000015E03F48DE0(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.fxc.hlsl
index b812002..c27055d 100644
--- a/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 2> value) {
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 4u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 8u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 2> >((offset + 12u), value[3u]);
 }
 
-static matrix<float16_t, 4, 2> m = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000247EABECFC0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.fxc.hlsl
index 67a113c..20fbf96 100644
--- a/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A25C4D9150(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000260AAC8BAF0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
index b00229e..f62ee93 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 4, 3>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001328C3A34D0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
-
-matrix<float16_t, 4, 3> f() {
-  const matrix<float16_t, 4, 3> m_1 = matrix<float16_t, 4, 3>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index 3d8ca52..04408c9 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E29AA8F7F0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A88AB0E090(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index 7e5aa83..66c9b0c 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000198287C19B0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 70ac06e..72d7969 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DE12F19B10(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001A8B9298FB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index 7e5aa83..0889353 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000146044A6C80(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 0b7d68f..2bbc103 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000026F678E2EA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002934A059570(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
index b00229e..4c0d330 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 4, 3>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000193EB424910(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
-
-matrix<float16_t, 4, 3> f() {
-  const matrix<float16_t, 4, 3> m_1 = matrix<float16_t, 4, 3>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index d347717..b245385 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B96067E770(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FD7AF24E50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index 7e5aa83..b56fc11 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018D623356F0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index efd4e90..2e1f0e5 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000241F14AF7C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002811AB0D2B0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index 7e5aa83..9f69a46 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>(vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h)), vector<float16_t, 3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)), vector<float16_t, 3>(float16_t(6.0h), float16_t(7.0h), float16_t(8.0h)), vector<float16_t, 3>(float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CC9A2F3B50(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 2cc9bd7..bdf9d2c 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002464266FB50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000014829E23A60(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.fxc.hlsl
index cf0aa2c..dd27d40 100644
--- a/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,21 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
-  const matrix<float16_t, 4, 3> m_1 = matrix<float16_t, 4, 3>(m);
+  tint_symbol_store(0u, matrix<float16_t, 4, 3>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023B41E45F40(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000023B41E45F40(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.fxc.hlsl
index 98ccb7f..984141b 100644
--- a/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000015641DCA030(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x0000015641DCA030(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000002B15E7EB170(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B15E7EB170(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.fxc.hlsl
index 819bef3..be751d4 100644
--- a/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 3> value) {
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 3> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 3> m = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021C0BA5B6E0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.fxc.hlsl
index 6dd0849..add0c24 100644
--- a/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023B11BB9200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001C51E35BB00(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
index d144fd9..2e9cbe6 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 4, 4>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CF0B070CB0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
-
-matrix<float16_t, 4, 4> f() {
-  const matrix<float16_t, 4, 4> m_1 = matrix<float16_t, 4, 4>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
index 2c59829..f372a2c 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001752AD6E510(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000235DA797810(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
index 197e408..a8e3ba9 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CC958A09B0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
index bb61dcf..d0892b1 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020EBA7C1590(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000227135CB3E0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
index 197e408..eaaef3f 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FA8F343B80(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
index d048faf..75dbda7 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027440F6FD20(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D262C37190(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
index d144fd9..a13ef29 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.fxc.hlsl
@@ -1,13 +1,20 @@
 SKIP: FAILED
 
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
+}
+
 [numthreads(1, 1, 1)]
-void unused_entry_point() {
+void f() {
+  tint_symbol_store(0u, matrix<float16_t, 4, 4>(m));
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000163EA28BC30(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
-
-matrix<float16_t, 4, 4> f() {
-  const matrix<float16_t, 4, 4> m_1 = matrix<float16_t, 4, 4>(m);
-  return m_1;
-}
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
index 75af5dd..a767440 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DDB22AF410(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000027EF57D6000(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
index 197e408..4b76e3e 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x000002296E140FF0(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
index 1ed5f1b..520770f 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000020E3348F9D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E44A0E3C00(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
index 197e408..b3d2575 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>(vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h)), vector<float16_t, 4>(float16_t(4.0h), float16_t(5.0h), float16_t(6.0h), float16_t(7.0h)), vector<float16_t, 4>(float16_t(8.0h), float16_t(9.0h), float16_t(10.0h), float16_t(11.0h)), vector<float16_t, 4>(float16_t(12.0h), float16_t(13.0h), float16_t(14.0h), float16_t(15.0h)));
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018429F7B050(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
index 584c88b..8a60467 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E08CFFE260(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000019700504900(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.fxc.hlsl
index e087223..2e4f450 100644
--- a/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.fxc.hlsl
@@ -1,11 +1,21 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
 }
 
+[numthreads(1, 1, 1)]
 void f() {
   matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
-  const matrix<float16_t, 4, 4> m_1 = matrix<float16_t, 4, 4>(m);
+  tint_symbol_store(0u, matrix<float16_t, 4, 4>(m));
+  return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002E19E52FD80(3,44-52): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002E19E52FD80(4,3-19): error X3018: invalid subscript 'Store'
+
diff --git a/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.fxc.hlsl
index 34499b0..17fbd39 100644
--- a/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,6 +16,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B7425992F0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
-C:\src\dawn\Shader@0x000001B7425992F0(4,3-19): error X3018: invalid subscript 'Store'
+C:\src\dawn\Shader@0x000001BA7AA66AA0(3,28-36): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001BA7AA66AA0(4,3-19): error X3018: invalid subscript 'Store'
 
diff --git a/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.fxc.hlsl
index 9b27b6a..67c5ff6 100644
--- a/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.fxc.hlsl
@@ -1,8 +1,20 @@
 SKIP: FAILED
 
-[numthreads(1, 1, 1)]
-void unused_entry_point() {
-  return;
+static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+RWByteAddressBuffer tint_symbol : register(u0);
+
+void tint_symbol_store(uint offset, matrix<float16_t, 4, 4> value) {
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 0u), value[0u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 8u), value[1u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 16u), value[2u]);
+  tint_symbol.Store<vector<float16_t, 4> >((offset + 24u), value[3u]);
 }
 
-static matrix<float16_t, 4, 4> m = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+[numthreads(1, 1, 1)]
+void f() {
+  tint_symbol_store(0u, m);
+  return;
+}
+FXC validation failure:
+C:\src\dawn\Shader@0x00000220452F0110(1,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.fxc.hlsl
index 9044739..a141d08 100644
--- a/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001275A159200(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000186954C38C0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.fxc.hlsl
index 3b21542..1e56546 100644
--- a/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 2> v = vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h));
+FXC validation failure:
+C:\src\dawn\Shader@0x00000179878F5E70(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.ir.fxc.hlsl
index 0521b3a..8120f6b 100644
--- a/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec2/explicit/f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000134E6B7AFB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000117167E80E0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.fxc.hlsl
index 3b21542..3aeedc6 100644
--- a/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 2> v = vector<float16_t, 2>(float16_t(0.0h), float16_t(1.0h));
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CB275387A0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.ir.fxc.hlsl
index adf1096..4f04831 100644
--- a/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec2/inferred/f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BE878CADA0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002AD19956760(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.fxc.hlsl
index 4d1b912..b657dfc 100644
--- a/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 3> v = vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h));
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FC463A4940(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.ir.fxc.hlsl
index b0664cc..d332942 100644
--- a/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec3/explicit/f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EF2BE3AFB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002895B664970(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.fxc.hlsl
index 4d1b912..7c56219 100644
--- a/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 3> v = vector<float16_t, 3>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h));
+FXC validation failure:
+C:\src\dawn\Shader@0x000002709ECE4940(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.ir.fxc.hlsl
index 187aaf5..4abb23e 100644
--- a/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec3/inferred/f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000226124FAFB0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002BCAF5487D0(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.fxc.hlsl
index 6eae794..be6dba6 100644
--- a/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 4> v = vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023B35287600(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.ir.fxc.hlsl
index cb7004c..9198cba 100644
--- a/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec4/explicit/f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F052751570(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000239679A7E90(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.fxc.hlsl
index 6eae794..750b238 100644
--- a/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.fxc.hlsl
@@ -6,3 +6,6 @@
 }
 
 static vector<float16_t, 4> v = vector<float16_t, 4>(float16_t(0.0h), float16_t(1.0h), float16_t(2.0h), float16_t(3.0h));
+FXC validation failure:
+C:\src\dawn\Shader@0x0000026010BCFEB0(6,15-23): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.ir.fxc.hlsl
index 6cb6fbe..6c96b64 100644
--- a/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/type_ctor/vec4/inferred/f16.wgsl.expected.ir.fxc.hlsl
@@ -7,5 +7,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F094FD9150(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001FE7720FB50(2,15-23): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/array/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/array/f16.wgsl.expected.fxc.hlsl
index 1c44d18..db57b23 100644
--- a/test/tint/expressions/zero_init/array/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/array/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,7 @@
 void f() {
   float16_t v[4] = (float16_t[4])0;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000273A5B065E0(7,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000273A5B065E0(7,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/zero_init/array/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/array/f16.wgsl.expected.ir.fxc.hlsl
index 8d89221..1647721 100644
--- a/test/tint/expressions/zero_init/array/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/array/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,6 +10,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023BFC8B0220(3,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000023BFC8B0220(3,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x000001E301426590(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E301426590(3,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.fxc.hlsl
index 6a5e9af..f4417c6 100644
--- a/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 2, 2> v = matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000225ADAB4940(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.ir.fxc.hlsl
index 32cb9d7..358d0f1 100644
--- a/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat2x2/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CD0555FB60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E2B3E809D0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.fxc.hlsl
index d04d09d..d06a47c 100644
--- a/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 2, 3> v = matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002959E451A00(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.ir.fxc.hlsl
index 19d839e..3414856 100644
--- a/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat2x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000194216EFB60(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001CC6C240BE0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.fxc.hlsl
index 431ef8e..3fc4a1e 100644
--- a/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 2, 4> v = matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001FDC6CFFE70(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.ir.fxc.hlsl
index 03fbb66..42df164 100644
--- a/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat2x4/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024EA5F81040(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002B2BE944950(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.fxc.hlsl
index 22a7119..71f4bf7 100644
--- a/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 3, 2> v = matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D1924F2E20(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.ir.fxc.hlsl
index 21b51e9..c62bb5e 100644
--- a/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat3x2/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000253819191E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001B6B0B0B140(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.fxc.hlsl
index 619fb07..c02d923 100644
--- a/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 3, 3> v = matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000010D9CDA25A0(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.ir.fxc.hlsl
index b2ebab3..e4627ce 100644
--- a/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat3x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D301700800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001ACFEFA2C90(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.fxc.hlsl
index 6a0e669..3c8b3d1 100644
--- a/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 3, 4> v = matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F3E51C26B0(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.ir.fxc.hlsl
index c37f742..7cd7e5b 100644
--- a/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat3x4/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027CDD6C13F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002288DB61FD0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.fxc.hlsl
index bc445b6..1fea50e 100644
--- a/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 4, 2> v = matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020ED8906540(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.ir.fxc.hlsl
index 163dba9..5a6467c 100644
--- a/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat4x2/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019EF55A1150(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022DF467FE80(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.fxc.hlsl
index c90fe14..253feab 100644
--- a/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 4, 3> v = matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000157D7E6F950(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.ir.fxc.hlsl
index f53be58..ffd551c 100644
--- a/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat4x3/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A84CCE96E0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000002461C82FBB0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.fxc.hlsl
index 60b4256..d881911 100644
--- a/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   matrix<float16_t, 4, 4> v = matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002A6BDF63E70(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.ir.fxc.hlsl
index 22e9484..28509fb 100644
--- a/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/mat4x4/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001CA84CB9180(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x00000183319D6800(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.fxc.hlsl
index 5de9529..c32fda9 100644
--- a/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,7 @@
 void f() {
   float16_t v = float16_t(0.0h);
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B65B3665B0(7,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001B65B3665B0(7,13): error X3000: unrecognized identifier 'v'
+
diff --git a/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.ir.fxc.hlsl
index 9264800..0fbe172 100644
--- a/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/scalar/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,6 +10,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022650BBFFD0(3,3-11): error X3000: unrecognized identifier 'float16_t'
-C:\src\dawn\Shader@0x0000022650BBFFD0(3,13): error X3000: unrecognized identifier 'v'
+C:\src\dawn\Shader@0x000002286ECA7890(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002286ECA7890(3,13): error X3000: unrecognized identifier 'v'
 
diff --git a/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.fxc.hlsl
index 8ba295a..1d33a9f 100644
--- a/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   vector<float16_t, 2> v = (float16_t(0.0h)).xx;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001780C680B30(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.ir.fxc.hlsl
index d3eea90..062f9b5 100644
--- a/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/vec2/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD5DCA0330(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001588F010B40(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.fxc.hlsl
index dc53989..c9bf6a2 100644
--- a/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   vector<float16_t, 3> v = (float16_t(0.0h)).xxx;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D424D46260(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.ir.fxc.hlsl
index 4f945e2..4ded198 100644
--- a/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/vec3/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001DF51E9DF50(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D486B580B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.fxc.hlsl b/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.fxc.hlsl
index 193c339..a5c31f6 100644
--- a/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.fxc.hlsl
@@ -8,3 +8,6 @@
 void f() {
   vector<float16_t, 4> v = (float16_t(0.0h)).xxxx;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002192FD055D0(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.ir.fxc.hlsl b/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.ir.fxc.hlsl
index 81fe2d3..82de4ed 100644
--- a/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/expressions/zero_init/vec4/f16.wgsl.expected.ir.fxc.hlsl
@@ -10,5 +10,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024D295003F0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x0000022041C780B0(3,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.dxc.hlsl
index 753dc33..24db204 100644
--- a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.dxc.hlsl
@@ -16,7 +16,7 @@
   g(pos.x, fbf.x, tint_symbol.uv.x);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/a.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/a.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.fxc.hlsl
index 753dc33..24db204 100644
--- a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.fxc.hlsl
@@ -16,7 +16,7 @@
   g(pos.x, fbf.x, tint_symbol.uv.x);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/a.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/a.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl
index 6bb12f1..5554173 100644
--- a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl
@@ -25,5 +25,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002424654F860(19,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001A73282A350(19,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.dxc.hlsl
index e099cd7..0347dae 100644
--- a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.dxc.hlsl
@@ -11,7 +11,7 @@
   g(pos.x, uv.x, fbf.x);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/b.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/b.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.fxc.hlsl
index e099cd7..0347dae 100644
--- a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.fxc.hlsl
@@ -11,7 +11,7 @@
   g(pos.x, uv.x, fbf.x);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/b.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/b.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl
index aae6cd4..ba4996c 100644
--- a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000241CA6BE5C0(15,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000002196870B850(15,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.dxc.hlsl
index 5d6590c..8fff13d 100644
--- a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.dxc.hlsl
@@ -20,7 +20,7 @@
   g(tint_symbol.pos.x, tint_symbol.uv.x, tint_symbol.fbf.y);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/c.wgsl:2:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/c.wgsl:2:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.fxc.hlsl
index 5d6590c..8fff13d 100644
--- a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.fxc.hlsl
@@ -20,7 +20,7 @@
   g(tint_symbol.pos.x, tint_symbol.uv.x, tint_symbol.fbf.y);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/c.wgsl:2:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/c.wgsl:2:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl
index c555d92..0a2ff86 100644
--- a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl
@@ -26,5 +26,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002660673A030(21,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001A8DE766710(21,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.dxc.hlsl
index 20d76e7..4179400 100644
--- a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.dxc.hlsl
@@ -16,7 +16,7 @@
   g(fbf_2.z, tint_symbol.pos.x, uv.x, fbf_0.y);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/d.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/d.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.fxc.hlsl
index 20d76e7..4179400 100644
--- a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.fxc.hlsl
@@ -16,7 +16,7 @@
   g(fbf_2.z, tint_symbol.pos.x, uv.x, fbf_0.y);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/d.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/d.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl
index 3c4940f..b15cc11 100644
--- a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl
@@ -25,5 +25,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002699D249180(20,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000002222367FB60(20,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.dxc.hlsl
index 11c7c51..4e0ea3b 100644
--- a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.dxc.hlsl
@@ -18,7 +18,7 @@
 fn g(a : i32, b : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/e.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/e.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.fxc.hlsl
index 11c7c51..4e0ea3b 100644
--- a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.fxc.hlsl
@@ -18,7 +18,7 @@
 fn g(a : i32, b : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/e.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/e.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl
index da20ab9..4783782 100644
--- a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl
@@ -24,5 +24,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022D4644F6D0(19,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x00000216F79A03E0(19,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.dxc.hlsl
index a7c9651..4bc4e9b 100644
--- a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.dxc.hlsl
@@ -16,7 +16,7 @@
   g(tint_symbol.pos.x, fbf.g);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/f.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/f.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.fxc.hlsl
index a7c9651..4bc4e9b 100644
--- a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.fxc.hlsl
@@ -16,7 +16,7 @@
   g(tint_symbol.pos.x, fbf.g);
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/f.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/f.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl
index 629fb7d..aac82ca 100644
--- a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl
@@ -23,5 +23,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002359560F6F0(18,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001C985743FF0(18,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.dxc.hlsl
index 3aed149..174bfaa 100644
--- a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.dxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32, b : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/g.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/g.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.fxc.hlsl
index 3aed149..174bfaa 100644
--- a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.fxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32, b : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/g.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/g.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl
index 6e051c8..bfc7392 100644
--- a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EF83AEDEB0(14,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x0000024C1CD5D2B0(14,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.dxc.hlsl
index 664d484..a2989e1 100644
--- a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.dxc.hlsl
@@ -18,7 +18,7 @@
 fn g(a : f32, b : f32, c : i32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/h.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/h.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.fxc.hlsl
index 664d484..a2989e1 100644
--- a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.fxc.hlsl
@@ -18,7 +18,7 @@
 fn g(a : f32, b : f32, c : i32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/h.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/h.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl
index f45174e..3f7386b 100644
--- a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl
@@ -26,5 +26,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024797DF8F90(20,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001F64F8AF860(20,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.dxc.hlsl
index 8920f28..bbaaa57 100644
--- a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.dxc.hlsl
@@ -20,7 +20,7 @@
 fn g(a : f32, b : f32, c : i32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/i.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/i.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.fxc.hlsl
index 8920f28..bbaaa57 100644
--- a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.fxc.hlsl
@@ -20,7 +20,7 @@
 fn g(a : f32, b : f32, c : i32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/i.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/i.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl
index a3e840d..9b48264 100644
--- a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl
@@ -26,5 +26,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000201CFD71870(21,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001DBF0219000(21,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.dxc.hlsl
index 13c910f..59cd673 100644
--- a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.dxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32, b : f32, c : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/j.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/j.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.fxc.hlsl
index 13c910f..59cd673 100644
--- a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.fxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32, b : f32, c : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/additional_params/j.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/additional_params/j.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl
index 6b6ae85..486b81c 100644
--- a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002B459F615D0(15,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x0000026B6F2A5D40(15,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.dxc.hlsl
index fd054d5..9ddeed2 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.dxc.hlsl
@@ -17,7 +17,7 @@
   return Out(fbf_1, vec4f(20), fbf_3);
 }
 
-Failed to generate: extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.fxc.hlsl
index fd054d5..9ddeed2 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.fxc.hlsl
@@ -17,7 +17,7 @@
   return Out(fbf_1, vec4f(20), fbf_3);
 }
 
-Failed to generate: extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
index a7627f2..8d1c565 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000298CAECECE0(24,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001EA84F05920(24,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.dxc.hlsl
index 2b24196..276b566 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.dxc.hlsl
@@ -17,7 +17,7 @@
   return Out(vec4f(10), fbf, vec4f(30));
 }
 
-Failed to generate: extensions/texel_fetch/multiple_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.fxc.hlsl
index 2b24196..276b566 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.fxc.hlsl
@@ -17,7 +17,7 @@
   return Out(vec4f(10), fbf, vec4f(30));
 }
 
-Failed to generate: extensions/texel_fetch/multiple_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl
index 2e74082..9d3e0e6 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028A17E49BD0(23,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x0000026B8A427FC0(23,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.dxc.hlsl
index 5738e9c..d7a1804 100644
--- a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.dxc.hlsl
@@ -8,7 +8,7 @@
   return (fbf_1 + fbf_3);
 }
 
-Failed to generate: extensions/texel_fetch/one_output/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.fxc.hlsl
index 5738e9c..d7a1804 100644
--- a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.fxc.hlsl
@@ -8,7 +8,7 @@
   return (fbf_1 + fbf_3);
 }
 
-Failed to generate: extensions/texel_fetch/one_output/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl
index 687f88e..247df1f 100644
--- a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl
@@ -20,5 +20,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000221B6B449B0(15,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001793A5A3740(15,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.dxc.hlsl
index 1f7c39d..9699fa8 100644
--- a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.dxc.hlsl
@@ -8,7 +8,7 @@
   return fbf;
 }
 
-Failed to generate: extensions/texel_fetch/one_output/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/one_output/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.fxc.hlsl
index 1f7c39d..9699fa8 100644
--- a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.fxc.hlsl
@@ -8,7 +8,7 @@
   return fbf;
 }
 
-Failed to generate: extensions/texel_fetch/one_output/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/one_output/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl
index f4f8a4e..54eacf1 100644
--- a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl
@@ -19,5 +19,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000173F83B28A0(14,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x0000023A4A433F80(14,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.dxc.hlsl
index fdbfaa4..fd9a11f 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.dxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32, b : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.fxc.hlsl
index fdbfaa4..fd9a11f 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.fxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32, b : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
index 540c8fb..22cfeae 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
@@ -18,5 +18,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000234BECCE570(14,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001F9120D3D40(14,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.dxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.dxc.hlsl
index 783f662..c3ff97c 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.dxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/zero_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.fxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.fxc.hlsl
index 783f662..c3ff97c 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.fxc.hlsl
@@ -11,7 +11,7 @@
 fn g(a : f32) {
 }
 
-Failed to generate: extensions/texel_fetch/zero_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
+Failed to generate: <dawn>/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl:1:8 error: HLSL backend does not support extension 'chromium_experimental_framebuffer_fetch'
 enable chromium_experimental_framebuffer_fetch;
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl
index eafe82c..13adfb4 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl
@@ -17,5 +17,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000232C264AD50(13,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
+C:\src\dawn\Shader@0x000001E428EA8090(13,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
 
diff --git a/test/tint/loops/continue_in_switch.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/continue_in_switch.wgsl.expected.ir.fxc.hlsl
index 6902954..f3bf643 100644
--- a/test/tint/loops/continue_in_switch.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/continue_in_switch.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B9FF4F9140(17,11-19): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000001AF5634FF40(17,11-19): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/multiple_continues.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/multiple_continues.wgsl.expected.ir.fxc.hlsl
index fe61de1..02bc43a 100644
--- a/test/tint/loops/multiple_continues.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/multiple_continues.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000206AD467490(17,11-19): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000002A83953CA90(17,11-19): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/multiple_switch.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/multiple_switch.wgsl.expected.ir.fxc.hlsl
index 22118f7..3aac2ec 100644
--- a/test/tint/loops/multiple_switch.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/multiple_switch.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002147B899140(18,11-19): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000002A37D126860(18,11-19): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.fxc.hlsl
index 169363d..deee6b1 100644
--- a/test/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/nested_loop_loop_switch.wgsl.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C00EB60320(24,15-23): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000001A2B2C82510(24,15-23): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.fxc.hlsl
index 09bf8cd..b70b6c5 100644
--- a/test/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/nested_loop_switch_loop_switch.wgsl.expected.ir.fxc.hlsl
@@ -58,5 +58,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021283A4F7B0(27,19-27): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000001F4D3284CD0(27,19-27): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.fxc.hlsl
index 9d5f909..1fa5cb7 100644
--- a/test/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/nested_loop_switch_loop_switch_switch.wgsl.expected.ir.fxc.hlsl
@@ -76,5 +76,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019AC515E120(28,19-27): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000001D508175330(28,19-27): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.fxc.hlsl
index 6b07a11..6cf4510 100644
--- a/test/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/nested_loop_switch_switch.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019B15A419E0(21,15-23): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x00000267BF47D1C0(21,15-23): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/loops/single_continue.wgsl.expected.ir.fxc.hlsl b/test/tint/loops/single_continue.wgsl.expected.ir.fxc.hlsl
index c18b71b..233b2d4 100644
--- a/test/tint/loops/single_continue.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/loops/single_continue.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000223BDAD9310(17,11-19): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x0000029B2F096FB0(17,11-19): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/shadowing/loop.wgsl.expected.ir.fxc.hlsl b/test/tint/shadowing/loop.wgsl.expected.ir.fxc.hlsl
index 5c976a6..b193493 100644
--- a/test/tint/shadowing/loop.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/shadowing/loop.wgsl.expected.ir.fxc.hlsl
@@ -20,6 +20,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001993FACC9C0(10,42-53): warning X4000: use of potentially uninitialized variable (x)
-C:\src\dawn\Shader@0x000001993FACC9C0(10,42-53): error X4575: reading uninitialized value
+C:\src\dawn\Shader@0x000002396B306810(10,42-53): warning X4000: use of potentially uninitialized variable (x)
+C:\src\dawn\Shader@0x000002396B306810(10,42-53): error X4575: reading uninitialized value
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.fxc.hlsl
index dbd85a8..49b8b31 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.ir.fxc.hlsl
@@ -34,6 +34,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000222895AE2D0(25,7-27): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x00000222895AE2D0(19,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000191EFCB4470(25,7-27): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000191EFCB4470(19,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl
index ceb226e..8704beb 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.ir.fxc.hlsl
@@ -34,6 +34,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019C788DFD90(27,9-29): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000019C788DFD90(19,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000158652C6080(27,9-29): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000158652C6080(19,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.fxc.hlsl
index 4624be6..99e2795 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002265C81F120(20,5-25): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000012F5A901540(20,5-25): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.fxc.hlsl
index 7748e25..8f6da15 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.ir.fxc.hlsl
@@ -32,5 +32,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CD9F38DE90(29,3-30): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000267D79FF9E0(29,3-30): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.fxc.hlsl
index f4049f9..5b05b6f 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.ir.fxc.hlsl
@@ -21,5 +21,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018CCB83D8F0(18,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000002029BE0BBB0(18,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.fxc.hlsl
index 67d9658..74b2bed 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.ir.fxc.hlsl
@@ -21,5 +21,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002A19993CC50(18,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000024BF7880550(18,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.fxc.hlsl
index 41f7b0c..6dbe7fe 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.ir.fxc.hlsl
@@ -25,5 +25,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002412A61DF20(22,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000130DA6F0920(22,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.fxc.hlsl
index ce08e4a..6f77e36 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.ir.fxc.hlsl
@@ -25,5 +25,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E59CCFDED0(22,3-22): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000021CB7D17B40(22,3-22): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.fxc.hlsl
index 04c20a9..0092ff7 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.ir.fxc.hlsl
@@ -16,5 +16,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F780DAA050(12,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001D6169354E0(12,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.fxc.hlsl
index 9dbcd1a..f1e4385 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.ir.fxc.hlsl
@@ -24,5 +24,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A37A65F9B0(19,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000268F85D7490(19,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.fxc.hlsl
index abcb595..2d0390d 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.ir.fxc.hlsl
@@ -25,5 +25,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D004D41E80(22,3-25): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000230F10E7550(22,3-25): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.fxc.hlsl
index 0dda5c2..e942ca9 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.ir.fxc.hlsl
@@ -15,5 +15,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002E9F7C92A00(12,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000024C292020F0(12,3-23): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.fxc.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.fxc.hlsl
index 65c30e8..9b135d1 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.ir.fxc.hlsl
@@ -25,5 +25,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002821A3E9250(16,3-22): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000002032D1FBE60(16,3-22): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl
index 216c128..e08863d 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1452 internal compiler error: TINT_ASSERT(!name.empty())
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1505 internal compiler error: TINT_ASSERT(!name.empty())
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl
index 7b5ce80..e08863d 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1493 internal compiler error: TINT_ASSERT(!name.empty())
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1505 internal compiler error: TINT_ASSERT(!name.empty())
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
index 216c128..e08863d 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1452 internal compiler error: TINT_ASSERT(!name.empty())
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1505 internal compiler error: TINT_ASSERT(!name.empty())
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
index 7b5ce80..e08863d 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.fxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1493 internal compiler error: TINT_ASSERT(!name.empty())
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1505 internal compiler error: TINT_ASSERT(!name.empty())
 ********************************************************************
 *  The tint shader compiler has encountered an unexpected error.   *
 *                                                                  *
diff --git a/test/tint/types/functions/shader_io/compute_subgroup_builtins.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/compute_subgroup_builtins.wgsl.expected.fxc.hlsl
index 0bbfaea..e77d45f 100644
--- a/test/tint/types/functions/shader_io/compute_subgroup_builtins.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_subgroup_builtins.wgsl.expected.fxc.hlsl
@@ -11,3 +11,6 @@
   main_inner(WaveGetLaneIndex(), WaveGetLaneCount());
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A2A5FE6E80(9,14-31): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/types/functions/shader_io/compute_subgroup_builtins_struct.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/compute_subgroup_builtins_struct.wgsl.expected.fxc.hlsl
index 830f68f..b0d87a2 100644
--- a/test/tint/types/functions/shader_io/compute_subgroup_builtins_struct.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/compute_subgroup_builtins_struct.wgsl.expected.fxc.hlsl
@@ -13,7 +13,10 @@
 
 [numthreads(1, 1, 1)]
 void main() {
-  const ComputeInputs tint_symbol = {WaveGetLaneIndex(), WaveGetLaneCount()};
+  ComputeInputs tint_symbol = {WaveGetLaneIndex(), WaveGetLaneCount()};
   main_inner(tint_symbol);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A6A617D380(14,32-49): error X3004: undeclared identifier 'WaveGetLaneIndex'
+
diff --git a/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.fxc.hlsl
index 98230ce..7413714 100644
--- a/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.fxc.hlsl
@@ -25,3 +25,6 @@
   wrapper_result.b = inner_result.b;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021D5A56D0B0(2,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.fxc.hlsl
index e0909a7..1c435b1 100644
--- a/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021969D40070(2,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000027ACD768240(2,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.fxc.hlsl
index 50e64a3..5ea3b8e 100644
--- a/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.fxc.hlsl
@@ -10,15 +10,18 @@
 };
 
 void main_inner(int loc0, uint loc1, float loc2, float4 loc3, float16_t loc4, vector<float16_t, 3> loc5) {
-  const int i = loc0;
-  const uint u = loc1;
-  const float f = loc2;
-  const float4 v = loc3;
-  const float16_t x = loc4;
-  const vector<float16_t, 3> y = loc5;
+  int i = loc0;
+  uint u = loc1;
+  float f = loc2;
+  float4 v = loc3;
+  float16_t x = loc4;
+  vector<float16_t, 3> y = loc5;
 }
 
 void main(tint_symbol_1 tint_symbol) {
   main_inner(tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023FB701C450(6,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.fxc.hlsl
index a22cc8f..b2cd86e 100644
--- a/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.fxc.hlsl
@@ -24,5 +24,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D0843FF980(6,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002133E1A5640(6,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.fxc.hlsl
index f12683a..5d4e64c 100644
--- a/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.fxc.hlsl
@@ -18,16 +18,19 @@
 };
 
 void main_inner(FragmentInputs inputs) {
-  const int i = inputs.loc0;
-  const uint u = inputs.loc1;
-  const float f = inputs.loc2;
-  const float4 v = inputs.loc3;
-  const float16_t x = inputs.loc4;
-  const vector<float16_t, 3> y = inputs.loc5;
+  int i = inputs.loc0;
+  uint u = inputs.loc1;
+  float f = inputs.loc2;
+  float4 v = inputs.loc3;
+  float16_t x = inputs.loc4;
+  vector<float16_t, 3> y = inputs.loc5;
 }
 
 void main(tint_symbol_1 tint_symbol) {
-  const FragmentInputs tint_symbol_2 = {tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5};
+  FragmentInputs tint_symbol_2 = {tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5};
   main_inner(tint_symbol_2);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022B56411420(6,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
index 67bcdcf..d83f58a 100644
--- a/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
@@ -34,5 +34,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023338470940(6,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000238450610C0(6,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.fxc.hlsl
index 2743a24..5f70728 100644
--- a/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.fxc.hlsl
@@ -24,20 +24,23 @@
 
 void main_inner(FragmentInputs0 inputs0, bool front_facing, uint loc1, uint sample_index, FragmentInputs1 inputs1, float loc2, float16_t loc4) {
   if (front_facing) {
-    const float4 foo = inputs0.position;
-    const uint bar = (sample_index + inputs1.sample_mask);
-    const int i = inputs0.loc0;
-    const uint u = loc1;
-    const float f = loc2;
-    const float4 v = inputs1.loc3;
-    const float16_t x = loc4;
-    const vector<float16_t, 3> y = inputs1.loc5;
+    float4 foo = inputs0.position;
+    uint bar = (sample_index + inputs1.sample_mask);
+    int i = inputs0.loc0;
+    uint u = loc1;
+    float f = loc2;
+    float4 v = inputs1.loc3;
+    float16_t x = loc4;
+    vector<float16_t, 3> y = inputs1.loc5;
   }
 }
 
 void main(tint_symbol_1 tint_symbol) {
-  const FragmentInputs0 tint_symbol_2 = {tint_symbol.position, tint_symbol.loc0};
-  const FragmentInputs1 tint_symbol_3 = {tint_symbol.loc3, tint_symbol.loc5, tint_symbol.sample_mask};
+  FragmentInputs0 tint_symbol_2 = {float4(tint_symbol.position.xyz, (1.0f / tint_symbol.position.w)), tint_symbol.loc0};
+  FragmentInputs1 tint_symbol_3 = {tint_symbol.loc3, tint_symbol.loc5, tint_symbol.sample_mask};
   main_inner(tint_symbol_2, tint_symbol.front_facing, tint_symbol.loc1, tint_symbol.sample_index, tint_symbol_3, tint_symbol.loc2, tint_symbol.loc4);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001F11CC0CE80(7,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.fxc.hlsl
index 1837c9b..cfb94a2 100644
--- a/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_input_mixed_f16.wgsl.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C1D4504CD0(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001D031AD9510(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.fxc.hlsl
index 434d10c..1ba00dc 100644
--- a/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.fxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 tint_symbol main0() {
-  const int inner_result = main0_inner();
+  int inner_result = main0_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.value = inner_result;
   return wrapper_result;
@@ -24,7 +24,7 @@
 }
 
 tint_symbol_1 main1() {
-  const uint inner_result_1 = main1_inner();
+  uint inner_result_1 = main1_inner();
   tint_symbol_1 wrapper_result_1 = (tint_symbol_1)0;
   wrapper_result_1.value = inner_result_1;
   return wrapper_result_1;
@@ -39,7 +39,7 @@
 }
 
 tint_symbol_2 main2() {
-  const float inner_result_2 = main2_inner();
+  float inner_result_2 = main2_inner();
   tint_symbol_2 wrapper_result_2 = (tint_symbol_2)0;
   wrapper_result_2.value = inner_result_2;
   return wrapper_result_2;
@@ -54,7 +54,7 @@
 }
 
 tint_symbol_3 main3() {
-  const float4 inner_result_3 = main3_inner();
+  float4 inner_result_3 = main3_inner();
   tint_symbol_3 wrapper_result_3 = (tint_symbol_3)0;
   wrapper_result_3.value = inner_result_3;
   return wrapper_result_3;
@@ -69,7 +69,7 @@
 }
 
 tint_symbol_4 main4() {
-  const float16_t inner_result_4 = main4_inner();
+  float16_t inner_result_4 = main4_inner();
   tint_symbol_4 wrapper_result_4 = (tint_symbol_4)0;
   wrapper_result_4.value = inner_result_4;
   return wrapper_result_4;
@@ -84,8 +84,11 @@
 }
 
 tint_symbol_5 main5() {
-  const vector<float16_t, 3> inner_result_5 = main5_inner();
+  vector<float16_t, 3> inner_result_5 = main5_inner();
   tint_symbol_5 wrapper_result_5 = (tint_symbol_5)0;
   wrapper_result_5.value = inner_result_5;
   return wrapper_result_5;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020687E36110(62,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.fxc.hlsl
index 8b436f8..649c4b0 100644
--- a/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.fxc.hlsl
@@ -80,5 +80,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000205EC46E6C0(18,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E21FF0A010(18,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.fxc.hlsl
index 2190c4b..275ac0a 100644
--- a/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.fxc.hlsl
@@ -18,12 +18,12 @@
 };
 
 FragmentOutputs main_inner() {
-  const FragmentOutputs tint_symbol_1 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f), float16_t(2.25h), vector<float16_t, 3>(float16_t(3.0h), float16_t(5.0h), float16_t(8.0h))};
+  FragmentOutputs tint_symbol_1 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f), float16_t(2.25h), vector<float16_t, 3>(float16_t(3.0h), float16_t(5.0h), float16_t(8.0h))};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const FragmentOutputs inner_result = main_inner();
+  FragmentOutputs inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.loc0 = inner_result.loc0;
   wrapper_result.loc1 = inner_result.loc1;
@@ -33,3 +33,6 @@
   wrapper_result.loc5 = inner_result.loc5;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000022094813E30(6,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
index ce90bc8..43d71b9 100644
--- a/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
@@ -37,5 +37,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002014C26EF40(6,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000240DFC97A50(6,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.fxc.hlsl
index 94e7e05..05fcf2b 100644
--- a/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.fxc.hlsl
@@ -22,12 +22,12 @@
 };
 
 FragmentOutputs main_inner() {
-  const FragmentOutputs tint_symbol_1 = {1, 2.0f, 1u, 1.0f, 2u, float4(1.0f, 2.0f, 3.0f, 4.0f), float16_t(2.25h), vector<float16_t, 3>(float16_t(3.0h), float16_t(5.0h), float16_t(8.0h))};
+  FragmentOutputs tint_symbol_1 = {1, 2.0f, 1u, 1.0f, 2u, float4(1.0f, 2.0f, 3.0f, 4.0f), float16_t(2.25h), vector<float16_t, 3>(float16_t(3.0h), float16_t(5.0h), float16_t(8.0h))};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const FragmentOutputs inner_result = main_inner();
+  FragmentOutputs inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.loc0 = inner_result.loc0;
   wrapper_result.frag_depth = inner_result.frag_depth;
@@ -39,3 +39,6 @@
   wrapper_result.loc5 = inner_result.loc5;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D8D77CE480(8,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.fxc.hlsl
index f397737..10989e5 100644
--- a/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/fragment_output_mixed_f16.wgsl.expected.ir.fxc.hlsl
@@ -43,5 +43,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024BAC2F6130(8,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002DAF0EB4770(8,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.fxc.hlsl
index f435d11e..be7c176 100644
--- a/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.fxc.hlsl
@@ -12,12 +12,12 @@
 };
 
 Interface vert_main_inner() {
-  const Interface tint_symbol_3 = {0.400000006f, float16_t(0.599609375h), (0.0f).xxxx};
+  Interface tint_symbol_3 = {0.40000000596046447754f, float16_t(0.599609375h), (0.0f).xxxx};
   return tint_symbol_3;
 }
 
 tint_symbol vert_main() {
-  const Interface inner_result = vert_main_inner();
+  Interface inner_result = vert_main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.col1 = inner_result.col1;
   wrapper_result.col2 = inner_result.col2;
@@ -32,12 +32,15 @@
 };
 
 void frag_main_inner(Interface colors) {
-  const float r = colors.col1;
-  const float16_t g = colors.col2;
+  float r = colors.col1;
+  float16_t g = colors.col2;
 }
 
 void frag_main(tint_symbol_2 tint_symbol_1) {
-  const Interface tint_symbol_4 = {tint_symbol_1.col1, tint_symbol_1.col2, tint_symbol_1.pos};
+  Interface tint_symbol_4 = {tint_symbol_1.col1, tint_symbol_1.col2, float4(tint_symbol_1.pos.xyz, (1.0f / tint_symbol_1.pos.w))};
   frag_main_inner(tint_symbol_4);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000021F528FB720(3,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.fxc.hlsl
index d2a422d..deb78ea 100644
--- a/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_different_stages_f16.wgsl.expected.ir.fxc.hlsl
@@ -44,5 +44,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000270B6B3E730(3,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000023C6186FF90(3,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.fxc.hlsl
index 51ee218b..7d4ef77 100644
--- a/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.fxc.hlsl
@@ -27,16 +27,19 @@
 }
 
 void frag_main_inner(S input) {
-  const float f = input.f;
-  const uint u = input.u;
-  const float4 v = input.v;
-  const float16_t x = input.x;
-  const vector<float16_t, 3> y = input.y;
+  float f = input.f;
+  uint u = input.u;
+  float4 v = input.v;
+  float16_t x = input.x;
+  vector<float16_t, 3> y = input.y;
   output_store(0u, input);
 }
 
 void frag_main(tint_symbol_1 tint_symbol) {
-  const S tint_symbol_2 = {tint_symbol.f, tint_symbol.u, tint_symbol.v, tint_symbol.x, tint_symbol.y};
+  S tint_symbol_2 = {tint_symbol.f, tint_symbol.u, float4(tint_symbol.v.xyz, (1.0f / tint_symbol.v.w)), tint_symbol.x, tint_symbol.y};
   frag_main_inner(tint_symbol_2);
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002CB4DDD3FA0(5,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.fxc.hlsl
index 8089164..6450060 100644
--- a/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/shared_struct_storage_buffer_f16.wgsl.expected.ir.fxc.hlsl
@@ -41,5 +41,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C00A5DF060(5,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x0000025F2124B2F0(5,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.fxc.hlsl
index e4c8ace..a7c9083 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.fxc.hlsl
@@ -13,18 +13,21 @@
 };
 
 float4 main_inner(int loc0, uint loc1, float loc2, float4 loc3, float16_t loc4, vector<float16_t, 3> loc5) {
-  const int i = loc0;
-  const uint u = loc1;
-  const float f = loc2;
-  const float4 v = loc3;
-  const float16_t x = loc4;
-  const vector<float16_t, 3> y = loc5;
+  int i = loc0;
+  uint u = loc1;
+  float f = loc2;
+  float4 v = loc3;
+  float16_t x = loc4;
+  vector<float16_t, 3> y = loc5;
   return (0.0f).xxxx;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const float4 inner_result = main_inner(tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5);
+  float4 inner_result = main_inner(tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5);
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.value = inner_result;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000295F9D26590(6,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.fxc.hlsl
index 7aacb8a..81c066b 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002BCED579660(10,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000002256CC690B0(10,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.fxc.hlsl
index 3425f1a..35c0bf0 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.fxc.hlsl
@@ -21,19 +21,22 @@
 };
 
 float4 main_inner(VertexInputs inputs) {
-  const int i = inputs.loc0;
-  const uint u = inputs.loc1;
-  const float f = inputs.loc2;
-  const float4 v = inputs.loc3;
-  const float16_t x = inputs.loc4;
-  const vector<float16_t, 3> y = inputs.loc5;
+  int i = inputs.loc0;
+  uint u = inputs.loc1;
+  float f = inputs.loc2;
+  float4 v = inputs.loc3;
+  float16_t x = inputs.loc4;
+  vector<float16_t, 3> y = inputs.loc5;
   return (0.0f).xxxx;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const VertexInputs tint_symbol_3 = {tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5};
-  const float4 inner_result = main_inner(tint_symbol_3);
+  VertexInputs tint_symbol_3 = {tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc4, tint_symbol.loc5};
+  float4 inner_result = main_inner(tint_symbol_3);
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.value = inner_result;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CC999DCB80(6,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
index f48b06a..4ef25d9 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
@@ -40,5 +40,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000216969CEAD0(6,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x000001E2F8C7CC50(6,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.fxc.hlsl
index bc03ac4..1ef01b2 100644
--- a/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.fxc.hlsl
@@ -24,21 +24,24 @@
 };
 
 float4 main_inner(VertexInputs0 inputs0, uint loc1, uint instance_index, VertexInputs1 inputs1, float16_t loc4) {
-  const uint foo = (inputs0.vertex_index + instance_index);
-  const int i = inputs0.loc0;
-  const uint u = loc1;
-  const float f = inputs1.loc2;
-  const float4 v = inputs1.loc3;
-  const float16_t x = loc4;
-  const vector<float16_t, 3> y = inputs1.loc5;
+  uint foo = (inputs0.vertex_index + instance_index);
+  int i = inputs0.loc0;
+  uint u = loc1;
+  float f = inputs1.loc2;
+  float4 v = inputs1.loc3;
+  float16_t x = loc4;
+  vector<float16_t, 3> y = inputs1.loc5;
   return (0.0f).xxxx;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const VertexInputs0 tint_symbol_3 = {tint_symbol.vertex_index, tint_symbol.loc0};
-  const VertexInputs1 tint_symbol_4 = {tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc5};
-  const float4 inner_result = main_inner(tint_symbol_3, tint_symbol.loc1, tint_symbol.instance_index, tint_symbol_4, tint_symbol.loc4);
+  VertexInputs0 tint_symbol_3 = {tint_symbol.vertex_index, tint_symbol.loc0};
+  VertexInputs1 tint_symbol_4 = {tint_symbol.loc2, tint_symbol.loc3, tint_symbol.loc5};
+  float4 inner_result = main_inner(tint_symbol_3, tint_symbol.loc1, tint_symbol.instance_index, tint_symbol_4, tint_symbol.loc4);
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.value = inner_result;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000002570DCB7870(8,10-18): error X3000: syntax error: unexpected token 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.fxc.hlsl
index c3d7524..1bb71fb 100644
--- a/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_input_mixed_f16.wgsl.expected.ir.fxc.hlsl
@@ -47,5 +47,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FFABBD4780(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
+C:\src\dawn\Shader@0x000001E5E63626E0(9,10-18): error X3000: syntax error: unexpected token 'float16_t'
 
diff --git a/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.fxc.hlsl
index d93dd2c..6a4c049 100644
--- a/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.fxc.hlsl
@@ -20,12 +20,12 @@
 };
 
 VertexOutputs main_inner() {
-  const VertexOutputs tint_symbol_1 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f), (0.0f).xxxx, float16_t(2.25h), vector<float16_t, 3>(float16_t(3.0h), float16_t(5.0h), float16_t(8.0h))};
+  VertexOutputs tint_symbol_1 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f), (0.0f).xxxx, float16_t(2.25h), vector<float16_t, 3>(float16_t(3.0h), float16_t(5.0h), float16_t(8.0h))};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const VertexOutputs inner_result = main_inner();
+  VertexOutputs inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.loc0 = inner_result.loc0;
   wrapper_result.loc1 = inner_result.loc1;
@@ -36,3 +36,6 @@
   wrapper_result.loc5 = inner_result.loc5;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000019F00EE4930(7,3-11): error X3000: unrecognized identifier 'float16_t'
+
diff --git a/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl b/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
index 0a15214..3a1b1ba 100644
--- a/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.fxc.hlsl
@@ -40,5 +40,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028DC4F6F990(7,3-11): error X3000: unrecognized identifier 'float16_t'
+C:\src\dawn\Shader@0x00000286984F7F70(7,3-11): error X3000: unrecognized identifier 'float16_t'
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl
index cf26da3..489173a 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.dxc.hlsl
@@ -1,9 +1,37 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSampleLevel
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+
+SamplerState x_10 : register(s0);
+Texture2D x_20 : register(t1, space2);
+SamplerState x_30 : register(s1);
+void main_1() {
+  float2 vf12 = float2(1.0f, 2.0f);
+  float2 vf21 = float2(2.0f, 1.0f);
+  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
+  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  int i1 = 1;
+  int2 vi12 = int2(1, 2);
+  int3 vi123 = int3(1, 2, 3);
+  int4 vi1234 = int4(1, 2, 3, 4);
+  uint u1 = 1u;
+  uint2 vu12 = uint2(1u, 2u);
+  uint3 vu123 = uint3(1u, 2u, 3u);
+  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
+  float coords1 = 1.0f;
+  float2 coords12 = vf12;
+  float3 coords123 = vf123;
+  float4 coords1234 = vf1234;
+  Texture2D v = x_20;
+  SamplerState v_1 = x_10;
+  float4 x_79 = float4(v.SampleLevel(v_1, vf12, float(1)), 0.0f, 0.0f, 0.0f);
+}
+
+void main() {
+  main_1();
+}
+
+DXC validation failure:
+hlsl.hlsl:24:24: error: too many elements in vector initialization (expected 4 elements, have 7)
+  float4 x_79 = float4(v.SampleLevel(v_1, vf12, float(1)), 0.0f, 0.0f, 0.0f);
+                       ^
+
diff --git a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl
index 5ebd7fb..6604fbe 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleExplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028C2FED03D0(24,17-76): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000021CB5C05D00(24,17-76): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
index 58230f6..c1d6136 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
@@ -1,9 +1,37 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+
+SamplerState x_10 : register(s0);
+Texture2D x_20 : register(t1, space2);
+SamplerComparisonState x_30 : register(s1);
+void main_1() {
+  float f1 = 1.0f;
+  float2 vf12 = float2(1.0f, 2.0f);
+  float2 vf21 = float2(2.0f, 1.0f);
+  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
+  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  int i1 = 1;
+  int2 vi12 = int2(1, 2);
+  int3 vi123 = int3(1, 2, 3);
+  int4 vi1234 = int4(1, 2, 3, 4);
+  uint u1 = 1u;
+  uint2 vu12 = uint2(1u, 2u);
+  uint3 vu123 = uint3(1u, 2u, 3u);
+  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
+  float coords1 = 1.0f;
+  float2 coords12 = vf12;
+  float3 coords123 = vf123;
+  float4 coords1234 = vf1234;
+  float4 x_200 = float4(x_20.Sample(x_10, coords12), 0.0f, 0.0f, 0.0f);
+  float x_210 = x_20.SampleCmp(x_30, coords12, 0.20000000298023223877f);
+}
+
+void main() {
+  main_1();
+}
+
+DXC validation failure:
+hlsl.hlsl:23:25: error: too many elements in vector initialization (expected 4 elements, have 7)
+  float4 x_200 = float4(x_20.Sample(x_10, coords12), 0.0f, 0.0f, 0.0f);
+                        ^
+
diff --git a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
index 5784bc4..356abfb 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleImplicitLod_BothDrefAndNonDref_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
@@ -31,5 +31,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ECC4C70640(23,18-70): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x0000020E2D0B1940(23,18-70): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
index 58230f6..4dc3e07 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.dxc.hlsl
@@ -1,9 +1,36 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1010 internal compiler error: TINT_UNREACHABLE unhandled: textureSample
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+
+SamplerState x_10 : register(s0);
+Texture2D x_20 : register(t1, space2);
+SamplerState x_30 : register(s1);
+void main_1() {
+  float f1 = 1.0f;
+  float2 vf12 = float2(1.0f, 2.0f);
+  float2 vf21 = float2(2.0f, 1.0f);
+  float3 vf123 = float3(1.0f, 2.0f, 3.0f);
+  float4 vf1234 = float4(1.0f, 2.0f, 3.0f, 4.0f);
+  int i1 = 1;
+  int2 vi12 = int2(1, 2);
+  int3 vi123 = int3(1, 2, 3);
+  int4 vi1234 = int4(1, 2, 3, 4);
+  uint u1 = 1u;
+  uint2 vu12 = uint2(1u, 2u);
+  uint3 vu123 = uint3(1u, 2u, 3u);
+  uint4 vu1234 = uint4(1u, 2u, 3u, 4u);
+  float coords1 = 1.0f;
+  float2 coords12 = vf12;
+  float3 coords123 = vf123;
+  float4 coords1234 = vf1234;
+  float4 x_79 = float4(x_20.Sample(x_10, (coords123.xy / coords123[2u])), 0.0f, 0.0f, 0.0f);
+}
+
+void main() {
+  main_1();
+}
+
+DXC validation failure:
+hlsl.hlsl:23:24: error: too many elements in vector initialization (expected 4 elements, have 7)
+  float4 x_79 = float4(x_20.Sample(x_10, (coords123.xy / coords123[2u])), 0.0f, 0.0f, 0.0f);
+                       ^
+
diff --git a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
index 8b66c93..0dba28d 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleProjImplicitLod_DepthTexture_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.ir.fxc.hlsl
@@ -30,5 +30,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001EBC1D9F100(23,17-91): error X3014: incorrect number of arguments to numeric-type constructor
+C:\src\dawn\Shader@0x00000284C692B050(23,17-91): error X3014: incorrect number of arguments to numeric-type constructor
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.dxc.hlsl
index b406c6a..fea5bf9 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.dxc.hlsl
@@ -16,11 +16,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:12: error: Loop must have break.
+hlsl.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.dxc.hlsl
index b406c6a..fea5bf9 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.dxc.hlsl
@@ -16,11 +16,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:12: error: Loop must have break.
+hlsl.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl
index a8c1f7f..2aae7c2 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl
@@ -19,11 +19,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:15: error: Loop must have break.
+hlsl.hlsl:15: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl
index 46dcb3d..2c018dd 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl
@@ -18,3 +18,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016653FB2300(5,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl
index 6bc74b3..29ee324 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_MultiBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl
@@ -21,5 +21,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000243B153F1C0(6,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000013F105B86A0(6,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl
index 8dba16c..061e0a5 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.dxc.hlsl
@@ -19,11 +19,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:15: error: Loop must have break.
+hlsl.hlsl:15: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl
index c7b40eb..169ad4a 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.fxc.hlsl
@@ -18,3 +18,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001E01B242490(5,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl
index 144156d..5f32d9a 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.fxc.hlsl
@@ -23,5 +23,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018B3E27F620(6,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001DA9BD640D0(6,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.dxc.hlsl
index 0e85a75..0a14f6b 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.dxc.hlsl
@@ -31,11 +31,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:27: error: Loop must have break.
+hlsl.hlsl:27: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.fxc.hlsl
index cd036c6..53a5b46 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.fxc.hlsl
@@ -30,3 +30,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023C4CB4FAE0(5,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.fxc.hlsl
index c88bcde..8770d8e 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CB50827330(6,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000021005EF8CA0(6,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.dxc.hlsl
index b99754a..8bcadcc 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.dxc.hlsl
@@ -24,11 +24,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:20: error: Loop must have break.
+hlsl.hlsl:20: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.fxc.hlsl
index 2008cf6..6dfa6cd 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.fxc.hlsl
@@ -23,3 +23,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000018A859A6D50(5,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.fxc.hlsl
index 686a5e3..6f9108f 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.fxc.hlsl
@@ -26,5 +26,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002CAFFE9D940(6,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001922AEBCA50(6,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.dxc.hlsl
index b406c6a..fea5bf9 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.dxc.hlsl
@@ -16,11 +16,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:12: error: Loop must have break.
+hlsl.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.dxc.hlsl
index fe9cd64..d223598 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.dxc.hlsl
@@ -20,11 +20,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:16: error: Loop must have break.
+hlsl.hlsl:16: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.fxc.hlsl
index 6a8669f..263796e 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.fxc.hlsl
@@ -19,3 +19,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000017172EA2550(4,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.fxc.hlsl
index df8102d..4a24abf 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.fxc.hlsl
@@ -22,5 +22,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000151A1D40EF0(5,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001ACDE127270(5,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.dxc.hlsl
index ea1f61c..09da336 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.dxc.hlsl
@@ -21,11 +21,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:17: error: Loop must have break.
+hlsl.hlsl:17: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.fxc.hlsl
index e86a2d8..a373093 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.fxc.hlsl
@@ -20,3 +20,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027C3A2D6100(4,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.fxc.hlsl
index 3edd37d..66290c2 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.fxc.hlsl
@@ -23,5 +23,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D88978F1E0(5,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001A4C0FB3880(5,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.dxc.hlsl
index 5315678..94c4d43 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.dxc.hlsl
@@ -19,11 +19,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:15: error: Loop must have break.
+hlsl.hlsl:15: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.fxc.hlsl
index e982c17..d00ec6d 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.fxc.hlsl
@@ -18,3 +18,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001D3E6732650(5,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.fxc.hlsl
index 8a79861..429556d 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.fxc.hlsl
@@ -23,5 +23,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A09E02E850(6,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x00000296341533A0(6,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.dxc.hlsl
index b406c6a..fea5bf9 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.dxc.hlsl
@@ -16,11 +16,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:12: error: Loop must have break.
+hlsl.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.dxc.hlsl
index e924932..3caecd4 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.dxc.hlsl
@@ -31,11 +31,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:27: error: Loop must have break.
+hlsl.hlsl:27: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.fxc.hlsl
index f81ef24..c0d2d6c 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.fxc.hlsl
@@ -30,3 +30,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000029BD8C54850(5,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.fxc.hlsl
index 5def0cb..6db7a4c 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_DefConstruct_DoesNotEncloseAllUses.spvasm.expected.ir.fxc.hlsl
@@ -33,5 +33,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B21A17E630(6,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001FB5DE494D0(6,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.dxc.hlsl
index fbd0205..cd343b3 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.dxc.hlsl
@@ -5,8 +5,8 @@
 static bool x_8 = false;
 
 void main_1() {
-  const bool x_101 = x_7;
-  const bool x_102 = x_8;
+  bool x_101 = x_7;
+  bool x_102 = x_8;
   while (true) {
     uint x_2 = 0u;
     if (x_101) {
@@ -37,11 +37,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:33: error: Loop must have break.
+hlsl.hlsl:33: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.fxc.hlsl
index e81e985..03595e9 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.fxc.hlsl
@@ -5,8 +5,8 @@
 static bool x_8 = false;
 
 void main_1() {
-  const bool x_101 = x_7;
-  const bool x_102 = x_8;
+  bool x_101 = x_7;
+  bool x_102 = x_8;
   while (true) {
     uint x_2 = 0u;
     if (x_101) {
@@ -36,3 +36,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000136FE5AA0E0(8,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.fxc.hlsl
index 9c2d7b7..ddfb950 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000018D7371F3F0(9,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001F83386F200(9,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.dxc.hlsl
index d7adb1e..4eb06ba 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.dxc.hlsl
@@ -5,8 +5,8 @@
 static bool x_8 = false;
 
 void main_1() {
-  const bool x_101 = x_7;
-  const bool x_102 = x_8;
+  bool x_101 = x_7;
+  bool x_102 = x_8;
   while (true) {
     uint x_2 = 0u;
     if (x_101) {
@@ -37,11 +37,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:33: error: Loop must have break.
+hlsl.hlsl:33: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.fxc.hlsl
index 70a7e88..0532514 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.fxc.hlsl
@@ -5,8 +5,8 @@
 static bool x_8 = false;
 
 void main_1() {
-  const bool x_101 = x_7;
-  const bool x_102 = x_8;
+  bool x_101 = x_7;
+  bool x_102 = x_8;
   while (true) {
     uint x_2 = 0u;
     if (x_101) {
@@ -36,3 +36,6 @@
   main_1();
   return;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001CF86763560(8,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.fxc.hlsl
index 885eedf..5907ac7 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.fxc.hlsl
@@ -36,5 +36,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001E6C10E6C70(9,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000018B9B876050(9,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.dxc.hlsl
index 78365ea..fd71d5d 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.dxc.hlsl
@@ -8,8 +8,8 @@
   while (true) {
     uint x_2 = 0u;
     uint x_3 = 0u;
-    const bool x_101 = x_7;
-    const bool x_102 = x_8;
+    bool x_101 = x_7;
+    bool x_102 = x_8;
     x_2 = 0u;
     x_3 = 1u;
     if (x_101) {
@@ -22,7 +22,7 @@
       }
       {
         x_4 = (x_2 + 1u);
-        const uint x_3_c30 = x_3;
+        uint x_3_c30 = x_3;
         x_2 = x_4;
         x_3 = x_3_c30;
       }
@@ -36,11 +36,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:32: error: Loop must have break.
+hlsl.hlsl:32: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.dxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.dxc.hlsl
index 2b52fe6..3851b4e 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.dxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.dxc.hlsl
@@ -8,15 +8,15 @@
   while (true) {
     uint x_2 = 0u;
     uint x_3 = 0u;
-    const bool x_101 = x_7;
-    const bool x_102 = x_8;
+    bool x_101 = x_7;
+    bool x_102 = x_8;
     x_2 = 0u;
     x_3 = 1u;
     if (x_101) {
       break;
     }
     while (true) {
-      const uint x_3_c20 = x_3;
+      uint x_3_c20 = x_3;
       x_2 = (x_2 + 1u);
       x_3 = x_3_c20;
       if (x_102) {
@@ -32,11 +32,8 @@
   return;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:28: error: Loop must have break.
+hlsl.hlsl:28: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.fxc.hlsl
index 552c9db..bb11b53 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -170,6 +170,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FB3FC131E0(32,9-19): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x000001FB3FC131E0(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000194851AA9E0(32,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000194851AA9E0(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.fxc.hlsl
index 5357db1..5a6343f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-blockfrequency-several-for-loops/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -188,6 +188,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F4D44166B0(32,9-19): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x000001F4D44166B0(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000016D973ABEC0(32,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000016D973ABEC0(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.fxc.hlsl
index 2004a6e..4f4c45e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -73,6 +73,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000027EAAA71750(42,9-15): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000027EAAA71750(26,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000028C42CE0C60(42,9-15): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000028C42CE0C60(26,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.fxc.hlsl
index 4b167d9..71fe4ba 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-clamp-vector-component-condition-using-matrix/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -94,6 +94,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028B4E916D20(54,9-15): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000028B4E916D20(31,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000002624714B3A0(54,9-15): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000002624714B3A0(31,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.fxc.hlsl
index e3ffbe1..95d0468 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -45,5 +45,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000211051DFF10(23,3-16): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001CC70509F90(23,3-16): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.fxc.hlsl
index ca09884..918d2b0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-copy-prop-arrays-no-stores/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -49,5 +49,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024B4E32EC80(23,3-16): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001F0FA8DEF40(23,3-16): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl
index 1dc0ea1..76f0e8f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -60,6 +60,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000229147EEA50(27,7-32): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x00000229147EEA50(20,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001DEF43C0470(27,7-32): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001DEF43C0470(20,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl
index b3717fb..368a12b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dag-combiner-combine-casts-legalize-vector-types-xyz-swizzle-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -76,6 +76,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016F05573CD0(32,7-32): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000016F05573CD0(23,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000020C53606840(32,7-32): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000020C53606840(23,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.fxc.hlsl
index 3d93b12..582837a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.spvasm.expected.fxc.hlsl
@@ -1,105 +1,3 @@
 SKIP: FAILED
 
-int tint_clamp(int e, int low, int high) {
-  return min(max(e, low), high);
-}
-
-cbuffer cbuffer_x_7 : register(b0) {
-  uint4 x_7[1];
-};
-cbuffer cbuffer_x_10 : register(b1) {
-  uint4 x_10[4];
-};
-static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
-static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
-
-void main_1() {
-  float4 data[2] = (float4[2])0;
-  int b = 0;
-  int y = 0;
-  int i = 0;
-  const float x_42 = asfloat(x_7[0].x);
-  const float x_45 = asfloat(x_7[0].x);
-  const float4 tint_symbol_5[2] = {float4(x_42, x_42, x_42, x_42), float4(x_45, x_45, x_45, x_45)};
-  data = tint_symbol_5;
-  const int x_49 = asint(x_10[1].x);
-  b = x_49;
-  const float x_51 = gl_FragCoord.y;
-  const int x_54 = asint(x_10[1].x);
-  const float x_56 = gl_FragCoord.y;
-  const int x_60 = asint(x_10[1].x);
-  y = tint_clamp(int(x_51), (x_54 | int(x_56)), x_60);
-  const int x_63 = asint(x_10[1].x);
-  i = x_63;
-  while (true) {
-    bool x_82 = false;
-    bool x_83 = false;
-    const int x_68 = i;
-    const int x_70 = asint(x_10[0].x);
-    if ((x_68 < x_70)) {
-    } else {
-      break;
-    }
-    const int x_73 = b;
-    const int x_75 = asint(x_10[0].x);
-    const bool x_76 = (x_73 > x_75);
-    x_83 = x_76;
-    if (x_76) {
-      const int x_79 = y;
-      const int x_81 = asint(x_10[1].x);
-      x_82 = (x_79 > x_81);
-      x_83 = x_82;
-    }
-    if (x_83) {
-      break;
-    }
-    const int x_86 = b;
-    b = (x_86 + 1);
-    {
-      const int x_88 = i;
-      i = (x_88 + 1);
-    }
-  }
-  const int x_90 = b;
-  const int x_92 = asint(x_10[0].x);
-  if ((x_90 == x_92)) {
-    const int x_97 = asint(x_10[2].x);
-    const int x_99 = asint(x_10[1].x);
-    const int x_101 = asint(x_10[3].x);
-    const int x_104 = asint(x_10[1].x);
-    const int x_107 = asint(x_10[2].x);
-    const int x_110 = asint(x_10[2].x);
-    const int x_113 = asint(x_10[1].x);
-    const float4 tint_symbol_3 = float4(float(x_104), float(x_107), float(x_110), float(x_113));
-    const int tint_symbol_4 = tint_clamp(x_97, x_99, x_101);
-    data[tint_symbol_4] = tint_symbol_3;
-  }
-  const int x_118 = asint(x_10[1].x);
-  const float4 x_120 = data[x_118];
-  x_GLF_color = float4(x_120.x, x_120.y, x_120.z, x_120.w);
-  return;
-}
-
-struct main_out {
-  float4 x_GLF_color_1;
-};
-struct tint_symbol_1 {
-  float4 gl_FragCoord_param : SV_Position;
-};
-struct tint_symbol_2 {
-  float4 x_GLF_color_1 : SV_Target0;
-};
-
-main_out main_inner(float4 gl_FragCoord_param) {
-  gl_FragCoord = gl_FragCoord_param;
-  main_1();
-  const main_out tint_symbol_6 = {x_GLF_color};
-  return tint_symbol_6;
-}
-
-tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
-  tint_symbol_2 wrapper_result = (tint_symbol_2)0;
-  wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
-  return wrapper_result;
-}
+exit status 0xc00000fd
\ No newline at end of file
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.fxc.hlsl
index bceb472..582837a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-fragcoord-clamp-array-access/0-opt.wgsl.expected.fxc.hlsl
@@ -1,106 +1,3 @@
 SKIP: FAILED
 
-int tint_clamp(int e, int low, int high) {
-  return min(max(e, low), high);
-}
-
-cbuffer cbuffer_x_7 : register(b0) {
-  uint4 x_7[1];
-};
-cbuffer cbuffer_x_10 : register(b1) {
-  uint4 x_10[4];
-};
-static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
-static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
-
-void main_1() {
-  float4 data[2] = (float4[2])0;
-  int b = 0;
-  int y = 0;
-  int i = 0;
-  const float x_42 = asfloat(x_7[0].x);
-  const float x_45 = asfloat(x_7[0].x);
-  const float4 tint_symbol_5[2] = {float4(x_42, x_42, x_42, x_42), float4(x_45, x_45, x_45, x_45)};
-  data = tint_symbol_5;
-  const int x_49 = asint(x_10[1].x);
-  b = x_49;
-  const float x_51 = gl_FragCoord.y;
-  const int x_54 = asint(x_10[1].x);
-  const float x_56 = gl_FragCoord.y;
-  const int x_60 = asint(x_10[1].x);
-  y = tint_clamp(int(x_51), (x_54 | int(x_56)), x_60);
-  const int x_63 = asint(x_10[1].x);
-  i = x_63;
-  while (true) {
-    bool x_82 = false;
-    bool x_83_phi = false;
-    const int x_68 = i;
-    const int x_70 = asint(x_10[0].x);
-    if ((x_68 < x_70)) {
-    } else {
-      break;
-    }
-    const int x_73 = b;
-    const int x_75 = asint(x_10[0].x);
-    const bool x_76 = (x_73 > x_75);
-    x_83_phi = x_76;
-    if (x_76) {
-      const int x_79 = y;
-      const int x_81 = asint(x_10[1].x);
-      x_82 = (x_79 > x_81);
-      x_83_phi = x_82;
-    }
-    const bool x_83 = x_83_phi;
-    if (x_83) {
-      break;
-    }
-    const int x_86 = b;
-    b = (x_86 + 1);
-    {
-      const int x_88 = i;
-      i = (x_88 + 1);
-    }
-  }
-  const int x_90 = b;
-  const int x_92 = asint(x_10[0].x);
-  if ((x_90 == x_92)) {
-    const int x_97 = asint(x_10[2].x);
-    const int x_99 = asint(x_10[1].x);
-    const int x_101 = asint(x_10[3].x);
-    const int x_104 = asint(x_10[1].x);
-    const int x_107 = asint(x_10[2].x);
-    const int x_110 = asint(x_10[2].x);
-    const int x_113 = asint(x_10[1].x);
-    const float4 tint_symbol_3 = float4(float(x_104), float(x_107), float(x_110), float(x_113));
-    const int tint_symbol_4 = tint_clamp(x_97, x_99, x_101);
-    data[tint_symbol_4] = tint_symbol_3;
-  }
-  const int x_118 = asint(x_10[1].x);
-  const float4 x_120 = data[x_118];
-  x_GLF_color = float4(x_120.x, x_120.y, x_120.z, x_120.w);
-  return;
-}
-
-struct main_out {
-  float4 x_GLF_color_1;
-};
-struct tint_symbol_1 {
-  float4 gl_FragCoord_param : SV_Position;
-};
-struct tint_symbol_2 {
-  float4 x_GLF_color_1 : SV_Target0;
-};
-
-main_out main_inner(float4 gl_FragCoord_param) {
-  gl_FragCoord = gl_FragCoord_param;
-  main_1();
-  const main_out tint_symbol_6 = {x_GLF_color};
-  return tint_symbol_6;
-}
-
-tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
-  tint_symbol_2 wrapper_result = (tint_symbol_2)0;
-  wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
-  return wrapper_result;
-}
+exit status 0xc00000fd
\ No newline at end of file
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.fxc.hlsl
index d1ee477..7b968a3 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -1,9 +1,129 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\core\ir\transform\demote_to_helper.cc:208 internal compiler error: TINT_UNREACHABLE unexpected non-core instruction
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+struct main_out {
+  float4 x_GLF_color_1;
+};
+
+struct main_outputs {
+  float4 main_out_x_GLF_color_1 : SV_Target0;
+};
+
+
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b1) {
+  uint4 x_7[18];
+};
+cbuffer cbuffer_x_12 : register(b0) {
+  uint4 x_12[4];
+};
+cbuffer cbuffer_x_15 : register(b2) {
+  uint4 x_15[1];
+};
+static float4 x_GLF_color = (0.0f).xxxx;
+static bool continue_execution = true;
+void main_1() {
+  float4x4 m = float4x4((0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx);
+  float4 v = (0.0f).xxxx;
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  float zero = 0.0f;
+  x_GLF_global_loop_count = 0;
+  float v_1 = asfloat(x_7[1u].x);
+  float v_2 = asfloat(x_7[2u].x);
+  float v_3 = asfloat(x_7[3u].x);
+  float4 v_4 = float4(v_1, v_2, v_3, asfloat(x_7[4u].x));
+  float v_5 = asfloat(x_7[5u].x);
+  float v_6 = asfloat(x_7[6u].x);
+  float v_7 = asfloat(x_7[7u].x);
+  float4 v_8 = float4(v_5, v_6, v_7, asfloat(x_7[8u].x));
+  float v_9 = asfloat(x_7[9u].x);
+  float v_10 = asfloat(x_7[10u].x);
+  float v_11 = asfloat(x_7[11u].x);
+  float4 v_12 = float4(v_9, v_10, v_11, asfloat(x_7[12u].x));
+  float v_13 = asfloat(x_7[13u].x);
+  float v_14 = asfloat(x_7[14u].x);
+  float v_15 = asfloat(x_7[15u].x);
+  m = float4x4(v_4, v_8, v_12, float4(v_13, v_14, v_15, asfloat(x_7[16u].x)));
+  float v_16 = asfloat(x_7[1u].x);
+  float v_17 = asfloat(x_7[2u].x);
+  float v_18 = asfloat(x_7[3u].x);
+  v = float4(v_16, v_17, v_18, asfloat(x_7[4u].x));
+  f = asfloat(x_7[1u].x);
+  a = asint(x_12[0u].x);
+  {
+    while(true) {
+      if ((x_GLF_global_loop_count < 10)) {
+      } else {
+        break;
+      }
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      int x_121 = min(max(a, 0), 3);
+      float v_19 = v[x_121];
+      v[x_121] = (v_19 + asfloat(x_7[1u].x));
+      b = asint(x_12[2u].x);
+      {
+        while(true) {
+          if ((x_GLF_global_loop_count < 10)) {
+          } else {
+            break;
+          }
+          x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+          float v_20 = f;
+          float v_21 = v[min(max(b, 0), 3)];
+          float4 v_22 = m[min(max(b, 0), 3)];
+          f = (v_20 + (v_21 * v_22[a]));
+          {
+            b = (b - 1);
+          }
+          continue;
+        }
+      }
+      int x_153 = a;
+      int v_23 = min(max(x_153, 0), 3);
+      m[1][v_23] = asfloat(x_7[1u].x);
+      int v_24 = asint(x_15[0u].x);
+      if ((v_24 == asint(x_12[0u].x))) {
+        continue_execution = false;
+      }
+      int v_25 = asint(x_15[0u].x);
+      if ((v_25 == asint(x_12[1u].x))) {
+        continue_execution = false;
+      }
+      {
+        a = (a + 1);
+      }
+      continue;
+    }
+  }
+  zero = asfloat(x_7[0u].x);
+  float v_26 = f;
+  if (!((v_26 == asfloat(x_7[17u].x)))) {
+    zero = asfloat(x_7[1u].x);
+  }
+  float v_27 = f;
+  float v_28 = zero;
+  float v_29 = float(asint(x_12[0u].x));
+  x_GLF_color = float4(v_27, v_28, v_29, f);
+}
+
+main_out main_inner() {
+  main_1();
+  main_out v_30 = {x_GLF_color};
+  return v_30;
+}
+
+main_outputs main() {
+  main_out v_31 = main_inner();
+  main_outputs v_32 = {v_31.x_GLF_color_1};
+  if (!(continue_execution)) {
+    discard;
+  }
+  main_outputs v_33 = v_32;
+  return v_33;
+}
+
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B1766D16B0(61,7-14): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001B1766D16B0(53,5-15): error X3511: forced to unroll loop, but unrolling failed.
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.fxc.hlsl
index d1ee477..58e27de 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-global-loop-counter-float-accumulate-matrix/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -1,9 +1,154 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\core\ir\transform\demote_to_helper.cc:208 internal compiler error: TINT_UNREACHABLE unexpected non-core instruction
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+struct main_out {
+  float4 x_GLF_color_1;
+};
+
+struct main_outputs {
+  float4 main_out_x_GLF_color_1 : SV_Target0;
+};
+
+
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b1) {
+  uint4 x_7[18];
+};
+cbuffer cbuffer_x_12 : register(b0) {
+  uint4 x_12[4];
+};
+cbuffer cbuffer_x_15 : register(b2) {
+  uint4 x_15[1];
+};
+static float4 x_GLF_color = (0.0f).xxxx;
+static bool continue_execution = true;
+void main_1() {
+  float4x4 m = float4x4((0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx);
+  float4 v = (0.0f).xxxx;
+  float f = 0.0f;
+  int a = 0;
+  int b = 0;
+  float zero = 0.0f;
+  x_GLF_global_loop_count = 0;
+  float x_62 = asfloat(x_7[1u].x);
+  float x_64 = asfloat(x_7[2u].x);
+  float x_66 = asfloat(x_7[3u].x);
+  float x_68 = asfloat(x_7[4u].x);
+  float x_70 = asfloat(x_7[5u].x);
+  float x_72 = asfloat(x_7[6u].x);
+  float x_74 = asfloat(x_7[7u].x);
+  float x_76 = asfloat(x_7[8u].x);
+  float x_78 = asfloat(x_7[9u].x);
+  float x_80 = asfloat(x_7[10u].x);
+  float x_82 = asfloat(x_7[11u].x);
+  float x_84 = asfloat(x_7[12u].x);
+  float x_86 = asfloat(x_7[13u].x);
+  float x_88 = asfloat(x_7[14u].x);
+  float x_90 = asfloat(x_7[15u].x);
+  float x_92 = asfloat(x_7[16u].x);
+  float4 v_1 = float4(x_62, x_64, x_66, x_68);
+  float4 v_2 = float4(x_70, x_72, x_74, x_76);
+  float4 v_3 = float4(x_78, x_80, x_82, x_84);
+  m = float4x4(v_1, v_2, v_3, float4(x_86, x_88, x_90, x_92));
+  float x_99 = asfloat(x_7[1u].x);
+  float x_101 = asfloat(x_7[2u].x);
+  float x_103 = asfloat(x_7[3u].x);
+  float x_105 = asfloat(x_7[4u].x);
+  v = float4(x_99, x_101, x_103, x_105);
+  float x_108 = asfloat(x_7[1u].x);
+  f = x_108;
+  int x_110 = asint(x_12[0u].x);
+  a = x_110;
+  {
+    while(true) {
+      int x_115 = x_GLF_global_loop_count;
+      if ((x_115 < 10)) {
+      } else {
+        break;
+      }
+      int x_118 = x_GLF_global_loop_count;
+      x_GLF_global_loop_count = (x_118 + 1);
+      int x_120 = a;
+      int x_121 = min(max(x_120, 0), 3);
+      float x_123 = asfloat(x_7[1u].x);
+      float x_125 = v[x_121];
+      v[x_121] = (x_125 + x_123);
+      int x_129 = asint(x_12[2u].x);
+      b = x_129;
+      {
+        while(true) {
+          int x_134 = x_GLF_global_loop_count;
+          if ((x_134 < 10)) {
+          } else {
+            break;
+          }
+          int x_137 = x_GLF_global_loop_count;
+          x_GLF_global_loop_count = (x_137 + 1);
+          int x_139 = b;
+          float x_142 = v[min(max(x_139, 0), 3)];
+          int x_143 = b;
+          int x_145 = a;
+          float x_147 = m[min(max(x_143, 0), 3)][x_145];
+          float x_149 = f;
+          f = (x_149 + (x_142 * x_147));
+          {
+            int x_151 = b;
+            b = (x_151 - 1);
+          }
+          continue;
+        }
+      }
+      int x_153 = a;
+      float x_156 = asfloat(x_7[1u].x);
+      m[1][min(max(x_153, 0), 3)] = x_156;
+      int x_159 = asint(x_15[0u].x);
+      int x_161 = asint(x_12[0u].x);
+      if ((x_159 == x_161)) {
+        continue_execution = false;
+      }
+      int x_166 = asint(x_15[0u].x);
+      int x_168 = asint(x_12[1u].x);
+      if ((x_166 == x_168)) {
+        continue_execution = false;
+      }
+      {
+        int x_172 = a;
+        a = (x_172 + 1);
+      }
+      continue;
+    }
+  }
+  float x_175 = asfloat(x_7[0u].x);
+  zero = x_175;
+  float x_176 = f;
+  float x_178 = asfloat(x_7[17u].x);
+  if (!((x_176 == x_178))) {
+    float x_183 = asfloat(x_7[1u].x);
+    zero = x_183;
+  }
+  float x_184 = f;
+  float x_185 = zero;
+  int x_187 = asint(x_12[0u].x);
+  float x_189 = f;
+  x_GLF_color = float4(x_184, x_185, float(x_187), x_189);
+}
+
+main_out main_inner() {
+  main_1();
+  main_out v_4 = {x_GLF_color};
+  return v_4;
+}
+
+main_outputs main() {
+  main_out v_5 = main_inner();
+  main_outputs v_6 = {v_5.x_GLF_color_1};
+  if (!(continue_execution)) {
+    discard;
+  }
+  main_outputs v_7 = v_6;
+  return v_7;
+}
+
+FXC validation failure:
+C:\src\dawn\Shader@0x000001B5725DCF50(72,7-14): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001B5725DCF50(60,5-15): error X3511: forced to unroll loop, but unrolling failed.
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.fxc.hlsl
index 988a8a5..641e7fd 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -59,5 +59,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B3941E6550(29,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001052B93A4C0(29,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.fxc.hlsl
index d4bb3c3..634d777 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-array-matrix-element/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -77,5 +77,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023CCA122EF0(32,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000237BCA9FE90(32,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.fxc.hlsl
index 60d90d6..5351f99 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -61,5 +61,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000185E815F580(30,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000225113265F0(30,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.fxc.hlsl
index 9a00bd1..bafabcf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-increment-vector-component-with-matrix-copy/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -74,5 +74,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001D7069CE980(33,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001C48DEC7160(33,3-9): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.fxc.hlsl
index f00ae7d..c618e1c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.spvasm.expected.ir.fxc.hlsl
@@ -46,5 +46,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000268A9A99130(22,3-10): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001F714631D40(22,3-10): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.fxc.hlsl
index e31e00e..68580ea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-ldexp-undefined-mat-vec-multiply/0.wgsl.expected.ir.fxc.hlsl
@@ -50,5 +50,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000028A7C01EE30(23,3-10): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001476BEE5B40(23,3-10): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.fxc.hlsl
index 0a8a34a..18341cb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -89,6 +89,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F6AC919D20(41,7-15): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x000001F6AC919D20(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000125C4D32760(41,7-15): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000125C4D32760(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.fxc.hlsl
index 03c6162..0173013 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-loop-increment-matrix-element-break-after-first-iteration/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -108,6 +108,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023DF1BB0640(43,7-15): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000023DF1BB0640(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001BB487785C0(43,7-15): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001BB487785C0(30,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.fxc.hlsl
index 444ce4d..90e9bef 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.spvasm.expected.fxc.hlsl
@@ -1,741 +1,3 @@
 SKIP: FAILED
 
-void set_scalar_float2x3(inout float2x3 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[1];
-      break;
-  }
-}
-
-void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
-      break;
-  }
-}
-
-void set_scalar_float3x2(inout float3x2 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xx == int2(0, 1)) ? val.xx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xx == int2(0, 1)) ? val.xx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xx == int2(0, 1)) ? val.xx : mat[2];
-      break;
-  }
-}
-
-void set_scalar_float3x3(inout float3x3 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[2];
-      break;
-  }
-}
-
-void set_scalar_float3x4(inout float3x4 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[2];
-      break;
-  }
-}
-
-void set_scalar_float4x2(inout float4x2 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xx == int2(0, 1)) ? val.xx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xx == int2(0, 1)) ? val.xx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xx == int2(0, 1)) ? val.xx : mat[2];
-      break;
-    case 3:
-      mat[3] = (row.xx == int2(0, 1)) ? val.xx : mat[3];
-      break;
-  }
-}
-
-void set_scalar_float4x3(inout float4x3 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[2];
-      break;
-    case 3:
-      mat[3] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[3];
-      break;
-  }
-}
-
-void set_scalar_float4x4(inout float4x4 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[2];
-      break;
-    case 3:
-      mat[3] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[3];
-      break;
-  }
-}
-
-static int x_GLF_global_loop_count = 0;
-static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
-
-void main_1() {
-  float2x3 m23 = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float2x4 m24 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float3x2 m32 = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float3x3 m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float3x4 m34 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float4x2 m42 = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float4x3 m43 = float4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float4x4 m44 = float4x4(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);
-  int i = 0;
-  int i_1 = 0;
-  int i_2 = 0;
-  int i_3 = 0;
-  int i_4 = 0;
-  int i_5 = 0;
-  int i_6 = 0;
-  int i_7 = 0;
-  int i_8 = 0;
-  int i_9 = 0;
-  int i_10 = 0;
-  int i_11 = 0;
-  int i_12 = 0;
-  int i_13 = 0;
-  int i_14 = 0;
-  int i_15 = 0;
-  int i_16 = 0;
-  int i_17 = 0;
-  int i_18 = 0;
-  int i_19 = 0;
-  int i_20 = 0;
-  int i_21 = 0;
-  int i_22 = 0;
-  int i_23 = 0;
-  int i_24 = 0;
-  int i_25 = 0;
-  int i_26 = 0;
-  int i_27 = 0;
-  int i_28 = 0;
-  int i_29 = 0;
-  int i_30 = 0;
-  int i_31 = 0;
-  int i_32 = 0;
-  int i_33 = 0;
-  int i_34 = 0;
-  int i_35 = 0;
-  int i_36 = 0;
-  int i_37 = 0;
-  float sum = 0.0f;
-  int r = 0;
-  x_GLF_global_loop_count = 0;
-  m23 = float2x3((0.0f).xxx, (0.0f).xxx);
-  m24 = float2x4((0.0f).xxxx, (0.0f).xxxx);
-  m32 = float3x2((0.0f).xx, (0.0f).xx, (0.0f).xx);
-  m33 = float3x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
-  m34 = float3x4((0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx);
-  m42 = float4x2((0.0f).xx, (0.0f).xx, (0.0f).xx, (0.0f).xx);
-  m43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
-  m44 = float4x4((0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx);
-  i = 0;
-  while (true) {
-    const int x_105 = i;
-    if ((x_105 < 1)) {
-    } else {
-      break;
-    }
-    i_1 = 0;
-    while (true) {
-      const int x_112 = i_1;
-      if ((x_112 < 1)) {
-      } else {
-        break;
-      }
-      i_2 = 0;
-      while (true) {
-        const int x_119 = i_2;
-        if ((x_119 < 1)) {
-        } else {
-          break;
-        }
-        i_3 = 0;
-        while (true) {
-          const int x_126 = i_3;
-          if ((x_126 < 1)) {
-          } else {
-            break;
-          }
-          i_4 = 0;
-          while (true) {
-            const int x_133 = i_4;
-            if ((x_133 < 1)) {
-            } else {
-              break;
-            }
-            i_5 = 0;
-            while (true) {
-              const int x_140 = i_5;
-              if ((x_140 < 1)) {
-              } else {
-                break;
-              }
-              i_6 = 0;
-              while (true) {
-                const int x_147 = i_6;
-                if ((x_147 < 1)) {
-                } else {
-                  break;
-                }
-                i_7 = 0;
-                while (true) {
-                  const int x_154 = i_7;
-                  if ((x_154 < 1)) {
-                  } else {
-                    break;
-                  }
-                  i_8 = 0;
-                  while (true) {
-                    const int x_161 = i_8;
-                    if ((x_161 < 1)) {
-                    } else {
-                      break;
-                    }
-                    i_9 = 0;
-                    while (true) {
-                      const int x_168 = i_9;
-                      if ((x_168 < 1)) {
-                      } else {
-                        break;
-                      }
-                      i_10 = 0;
-                      while (true) {
-                        const int x_175 = i_10;
-                        if ((x_175 < 1)) {
-                        } else {
-                          break;
-                        }
-                        i_11 = 0;
-                        while (true) {
-                          const int x_182 = i_11;
-                          if ((x_182 < 1)) {
-                          } else {
-                            break;
-                          }
-                          i_12 = 0;
-                          while (true) {
-                            const int x_189 = i_12;
-                            if ((x_189 < 1)) {
-                            } else {
-                              break;
-                            }
-                            i_13 = 0;
-                            while (true) {
-                              const int x_196 = i_13;
-                              if ((x_196 < 1)) {
-                              } else {
-                                break;
-                              }
-                              i_14 = 0;
-                              while (true) {
-                                const int x_203 = i_14;
-                                if ((x_203 < 1)) {
-                                } else {
-                                  break;
-                                }
-                                i_15 = 0;
-                                while (true) {
-                                  const int x_210 = i_15;
-                                  if ((x_210 < 1)) {
-                                  } else {
-                                    break;
-                                  }
-                                  i_16 = 0;
-                                  while (true) {
-                                    const int x_217 = i_16;
-                                    if ((x_217 < 1)) {
-                                    } else {
-                                      break;
-                                    }
-                                    i_17 = 0;
-                                    while (true) {
-                                      const int x_224 = i_17;
-                                      if ((x_224 < 1)) {
-                                      } else {
-                                        break;
-                                      }
-                                      i_18 = 0;
-                                      while (true) {
-                                        const int x_231 = i_18;
-                                        if ((x_231 < 1)) {
-                                        } else {
-                                          break;
-                                        }
-                                        i_19 = 0;
-                                        while (true) {
-                                          const int x_238 = i_19;
-                                          if ((x_238 < 1)) {
-                                          } else {
-                                            break;
-                                          }
-                                          i_20 = 0;
-                                          while (true) {
-                                            const int x_245 = i_20;
-                                            if ((x_245 < 1)) {
-                                            } else {
-                                              break;
-                                            }
-                                            i_21 = 0;
-                                            while (true) {
-                                              const int x_252 = i_21;
-                                              if ((x_252 < 1)) {
-                                              } else {
-                                                break;
-                                              }
-                                              i_22 = 0;
-                                              while (true) {
-                                                const int x_259 = i_22;
-                                                if ((x_259 < 1)) {
-                                                } else {
-                                                  break;
-                                                }
-                                                i_23 = 0;
-                                                while (true) {
-                                                  const int x_266 = i_23;
-                                                  if ((x_266 < 1)) {
-                                                  } else {
-                                                    break;
-                                                  }
-                                                  i_24 = 0;
-                                                  while (true) {
-                                                    const int x_273 = i_24;
-                                                    if ((x_273 < 1)) {
-                                                    } else {
-                                                      break;
-                                                    }
-                                                    i_25 = 0;
-                                                    while (true) {
-                                                      const int x_280 = i_25;
-                                                      if ((x_280 < 1)) {
-                                                      } else {
-                                                        break;
-                                                      }
-                                                      i_26 = 0;
-                                                      while (true) {
-                                                        const int x_287 = i_26;
-                                                        if ((x_287 < 1)) {
-                                                        } else {
-                                                          break;
-                                                        }
-                                                        i_27 = 0;
-                                                        while (true) {
-                                                          const int x_294 = i_27;
-                                                          if ((x_294 < 1)) {
-                                                          } else {
-                                                            break;
-                                                          }
-                                                          i_28 = 0;
-                                                          while (true) {
-                                                            const int x_301 = i_28;
-                                                            if ((x_301 < 1)) {
-                                                            } else {
-                                                              break;
-                                                            }
-                                                            i_29 = 0;
-                                                            while (true) {
-                                                              const int x_308 = i_29;
-                                                              if ((x_308 < 1)) {
-                                                              } else {
-                                                                break;
-                                                              }
-                                                              i_30 = 0;
-                                                              while (true) {
-                                                                const int x_315 = i_30;
-                                                                if ((x_315 < 1)) {
-                                                                } else {
-                                                                  break;
-                                                                }
-                                                                i_31 = 0;
-                                                                while (true) {
-                                                                  const int x_322 = i_31;
-                                                                  if ((x_322 < 1)) {
-                                                                  } else {
-                                                                    break;
-                                                                  }
-                                                                  i_32 = 0;
-                                                                  while (true) {
-                                                                    const int x_329 = i_32;
-                                                                    if ((x_329 < 1)) {
-                                                                    } else {
-                                                                      break;
-                                                                    }
-                                                                    i_33 = 0;
-                                                                    while (true) {
-                                                                      const int x_336 = i_33;
-                                                                      if ((x_336 < 1)) {
-                                                                      } else {
-                                                                        break;
-                                                                      }
-                                                                      i_34 = 0;
-                                                                      while (true) {
-                                                                        const int x_343 = i_34;
-                                                                        if ((x_343 < 1)) {
-                                                                        } else {
-                                                                          break;
-                                                                        }
-                                                                        i_35 = 0;
-                                                                        while (true) {
-                                                                          const int x_350 = i_35;
-                                                                          if ((x_350 < 1)) {
-                                                                          } else {
-                                                                            break;
-                                                                          }
-                                                                          i_36 = 0;
-                                                                          while (true) {
-                                                                            const int x_357 = i_36;
-                                                                            if ((x_357 < 1)) {
-                                                                            } else {
-                                                                              break;
-                                                                            }
-                                                                            i_37 = 0;
-                                                                            while (true) {
-                                                                              const int x_364 = i_37;
-                                                                              if ((x_364 < 1)) {
-                                                                              } else {
-                                                                                break;
-                                                                              }
-                                                                              while (true) {
-                                                                                const int x_371 = x_GLF_global_loop_count;
-                                                                                x_GLF_global_loop_count = (x_371 + 1);
-                                                                                {
-                                                                                  const int x_373 = x_GLF_global_loop_count;
-                                                                                  if (!((x_373 < 98))) { break; }
-                                                                                }
-                                                                              }
-                                                                              const int x_375 = i_37;
-                                                                              const int x_376 = i_37;
-                                                                              set_scalar_float2x3(m23, x_375, x_376, 1.0f);
-                                                                              const int x_378 = i_37;
-                                                                              const int x_379 = i_37;
-                                                                              set_scalar_float2x4(m24, x_378, x_379, 1.0f);
-                                                                              const int x_381 = i_37;
-                                                                              const int x_382 = i_37;
-                                                                              set_scalar_float3x2(m32, x_381, x_382, 1.0f);
-                                                                              const int x_384 = i_37;
-                                                                              const int x_385 = i_37;
-                                                                              set_scalar_float3x3(m33, x_384, x_385, 1.0f);
-                                                                              const int x_387 = i_37;
-                                                                              const int x_388 = i_37;
-                                                                              set_scalar_float3x4(m34, x_387, x_388, 1.0f);
-                                                                              const int x_390 = i_37;
-                                                                              const int x_391 = i_37;
-                                                                              set_scalar_float4x2(m42, x_390, x_391, 1.0f);
-                                                                              const int x_393 = i_37;
-                                                                              const int x_394 = i_37;
-                                                                              set_scalar_float4x3(m43, x_393, x_394, 1.0f);
-                                                                              const int x_396 = i_37;
-                                                                              const int x_397 = i_37;
-                                                                              set_scalar_float4x4(m44, x_396, x_397, 1.0f);
-                                                                              {
-                                                                                const int x_399 = i_37;
-                                                                                i_37 = (x_399 + 1);
-                                                                              }
-                                                                            }
-                                                                            {
-                                                                              const int x_401 = i_36;
-                                                                              i_36 = (x_401 + 1);
-                                                                            }
-                                                                          }
-                                                                          {
-                                                                            const int x_403 = i_35;
-                                                                            i_35 = (x_403 + 1);
-                                                                          }
-                                                                        }
-                                                                        {
-                                                                          const int x_405 = i_34;
-                                                                          i_34 = (x_405 + 1);
-                                                                        }
-                                                                      }
-                                                                      {
-                                                                        const int x_407 = i_33;
-                                                                        i_33 = (x_407 + 1);
-                                                                      }
-                                                                    }
-                                                                    {
-                                                                      const int x_409 = i_32;
-                                                                      i_32 = (x_409 + 1);
-                                                                    }
-                                                                  }
-                                                                  {
-                                                                    const int x_411 = i_31;
-                                                                    i_31 = (x_411 + 1);
-                                                                  }
-                                                                }
-                                                                {
-                                                                  const int x_413 = i_30;
-                                                                  i_30 = (x_413 + 1);
-                                                                }
-                                                              }
-                                                              {
-                                                                const int x_415 = i_29;
-                                                                i_29 = (x_415 + 1);
-                                                              }
-                                                            }
-                                                            {
-                                                              const int x_417 = i_28;
-                                                              i_28 = (x_417 + 1);
-                                                            }
-                                                          }
-                                                          {
-                                                            const int x_419 = i_27;
-                                                            i_27 = (x_419 + 1);
-                                                          }
-                                                        }
-                                                        {
-                                                          const int x_421 = i_26;
-                                                          i_26 = (x_421 + 1);
-                                                        }
-                                                      }
-                                                      {
-                                                        const int x_423 = i_25;
-                                                        i_25 = (x_423 + 1);
-                                                      }
-                                                    }
-                                                    {
-                                                      const int x_425 = i_24;
-                                                      i_24 = (x_425 + 1);
-                                                    }
-                                                  }
-                                                  {
-                                                    const int x_427 = i_23;
-                                                    i_23 = (x_427 + 1);
-                                                  }
-                                                }
-                                                {
-                                                  const int x_429 = i_22;
-                                                  i_22 = (x_429 + 1);
-                                                }
-                                              }
-                                              {
-                                                const int x_431 = i_21;
-                                                i_21 = (x_431 + 1);
-                                              }
-                                            }
-                                            {
-                                              const int x_433 = i_20;
-                                              i_20 = (x_433 + 1);
-                                            }
-                                          }
-                                          {
-                                            const int x_435 = i_19;
-                                            i_19 = (x_435 + 1);
-                                          }
-                                        }
-                                        {
-                                          const int x_437 = i_18;
-                                          i_18 = (x_437 + 1);
-                                        }
-                                      }
-                                      {
-                                        const int x_439 = i_17;
-                                        i_17 = (x_439 + 1);
-                                      }
-                                    }
-                                    {
-                                      const int x_441 = i_16;
-                                      i_16 = (x_441 + 1);
-                                    }
-                                  }
-                                  {
-                                    const int x_443 = i_15;
-                                    i_15 = (x_443 + 1);
-                                  }
-                                }
-                                {
-                                  const int x_445 = i_14;
-                                  i_14 = (x_445 + 1);
-                                }
-                              }
-                              {
-                                const int x_447 = i_13;
-                                i_13 = (x_447 + 1);
-                              }
-                            }
-                            {
-                              const int x_449 = i_12;
-                              i_12 = (x_449 + 1);
-                            }
-                          }
-                          {
-                            const int x_451 = i_11;
-                            i_11 = (x_451 + 1);
-                          }
-                        }
-                        {
-                          const int x_453 = i_10;
-                          i_10 = (x_453 + 1);
-                        }
-                      }
-                      {
-                        const int x_455 = i_9;
-                        i_9 = (x_455 + 1);
-                      }
-                    }
-                    {
-                      const int x_457 = i_8;
-                      i_8 = (x_457 + 1);
-                    }
-                  }
-                  {
-                    const int x_459 = i_7;
-                    i_7 = (x_459 + 1);
-                  }
-                }
-                {
-                  const int x_461 = i_6;
-                  i_6 = (x_461 + 1);
-                }
-              }
-              {
-                const int x_463 = i_5;
-                i_5 = (x_463 + 1);
-              }
-            }
-            {
-              const int x_465 = i_4;
-              i_4 = (x_465 + 1);
-            }
-          }
-          {
-            const int x_467 = i_3;
-            i_3 = (x_467 + 1);
-          }
-        }
-        {
-          const int x_469 = i_2;
-          i_2 = (x_469 + 1);
-        }
-      }
-      {
-        const int x_471 = i_1;
-        i_1 = (x_471 + 1);
-      }
-    }
-    {
-      const int x_473 = i;
-      i = (x_473 + 1);
-    }
-  }
-  sum = 0.0f;
-  r = 0;
-  while (true) {
-    const int x_479 = x_GLF_global_loop_count;
-    if ((x_479 < 100)) {
-    } else {
-      break;
-    }
-    const int x_482 = x_GLF_global_loop_count;
-    x_GLF_global_loop_count = (x_482 + 1);
-    const int x_484 = r;
-    const float x_486 = m23[0][x_484];
-    const float x_487 = sum;
-    sum = (x_487 + x_486);
-    const int x_489 = r;
-    const float x_491 = m24[0][x_489];
-    const float x_492 = sum;
-    sum = (x_492 + x_491);
-    const int x_494 = r;
-    const float x_496 = m32[0][x_494];
-    const float x_497 = sum;
-    sum = (x_497 + x_496);
-    const int x_499 = r;
-    const float x_501 = m33[0][x_499];
-    const float x_502 = sum;
-    sum = (x_502 + x_501);
-    const int x_504 = r;
-    const float x_506 = m34[0][x_504];
-    const float x_507 = sum;
-    sum = (x_507 + x_506);
-    const int x_509 = r;
-    const float x_511 = m42[0][x_509];
-    const float x_512 = sum;
-    sum = (x_512 + x_511);
-    const int x_514 = r;
-    const float x_516 = m43[0][x_514];
-    const float x_517 = sum;
-    sum = (x_517 + x_516);
-    const int x_519 = r;
-    const float x_521 = m44[0][x_519];
-    const float x_522 = sum;
-    sum = (x_522 + x_521);
-    {
-      const int x_524 = r;
-      r = (x_524 + 1);
-    }
-  }
-  const float x_526 = sum;
-  if ((x_526 == 8.0f)) {
-    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
-  } else {
-    x_GLF_color = (0.0f).xxxx;
-  }
-  return;
-}
-
-struct main_out {
-  float4 x_GLF_color_1;
-};
-struct tint_symbol {
-  float4 x_GLF_color_1 : SV_Target0;
-};
-
-main_out main_inner() {
-  main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
-  return tint_symbol_1;
-}
-
-tint_symbol main() {
-  const main_out inner_result = main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
-  return wrapper_result;
-}
+test timed out after 2m0s
\ No newline at end of file
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.fxc.hlsl
index 444ce4d..90e9bef 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-multiple-one-iteration-loops-global-counter-write-matrices/0-opt.wgsl.expected.fxc.hlsl
@@ -1,741 +1,3 @@
 SKIP: FAILED
 
-void set_scalar_float2x3(inout float2x3 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[1];
-      break;
-  }
-}
-
-void set_scalar_float2x4(inout float2x4 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
-      break;
-  }
-}
-
-void set_scalar_float3x2(inout float3x2 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xx == int2(0, 1)) ? val.xx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xx == int2(0, 1)) ? val.xx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xx == int2(0, 1)) ? val.xx : mat[2];
-      break;
-  }
-}
-
-void set_scalar_float3x3(inout float3x3 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[2];
-      break;
-  }
-}
-
-void set_scalar_float3x4(inout float3x4 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[2];
-      break;
-  }
-}
-
-void set_scalar_float4x2(inout float4x2 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xx == int2(0, 1)) ? val.xx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xx == int2(0, 1)) ? val.xx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xx == int2(0, 1)) ? val.xx : mat[2];
-      break;
-    case 3:
-      mat[3] = (row.xx == int2(0, 1)) ? val.xx : mat[3];
-      break;
-  }
-}
-
-void set_scalar_float4x3(inout float4x3 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[2];
-      break;
-    case 3:
-      mat[3] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[3];
-      break;
-  }
-}
-
-void set_scalar_float4x4(inout float4x4 mat, int col, int row, float val) {
-  switch (col) {
-    case 0:
-      mat[0] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[0];
-      break;
-    case 1:
-      mat[1] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[1];
-      break;
-    case 2:
-      mat[2] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[2];
-      break;
-    case 3:
-      mat[3] = (row.xxxx == int4(0, 1, 2, 3)) ? val.xxxx : mat[3];
-      break;
-  }
-}
-
-static int x_GLF_global_loop_count = 0;
-static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
-
-void main_1() {
-  float2x3 m23 = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float2x4 m24 = float2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float3x2 m32 = float3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float3x3 m33 = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float3x4 m34 = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float4x2 m42 = float4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float4x3 m43 = float4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  float4x4 m44 = float4x4(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);
-  int i = 0;
-  int i_1 = 0;
-  int i_2 = 0;
-  int i_3 = 0;
-  int i_4 = 0;
-  int i_5 = 0;
-  int i_6 = 0;
-  int i_7 = 0;
-  int i_8 = 0;
-  int i_9 = 0;
-  int i_10 = 0;
-  int i_11 = 0;
-  int i_12 = 0;
-  int i_13 = 0;
-  int i_14 = 0;
-  int i_15 = 0;
-  int i_16 = 0;
-  int i_17 = 0;
-  int i_18 = 0;
-  int i_19 = 0;
-  int i_20 = 0;
-  int i_21 = 0;
-  int i_22 = 0;
-  int i_23 = 0;
-  int i_24 = 0;
-  int i_25 = 0;
-  int i_26 = 0;
-  int i_27 = 0;
-  int i_28 = 0;
-  int i_29 = 0;
-  int i_30 = 0;
-  int i_31 = 0;
-  int i_32 = 0;
-  int i_33 = 0;
-  int i_34 = 0;
-  int i_35 = 0;
-  int i_36 = 0;
-  int i_37 = 0;
-  float sum = 0.0f;
-  int r = 0;
-  x_GLF_global_loop_count = 0;
-  m23 = float2x3((0.0f).xxx, (0.0f).xxx);
-  m24 = float2x4((0.0f).xxxx, (0.0f).xxxx);
-  m32 = float3x2((0.0f).xx, (0.0f).xx, (0.0f).xx);
-  m33 = float3x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
-  m34 = float3x4((0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx);
-  m42 = float4x2((0.0f).xx, (0.0f).xx, (0.0f).xx, (0.0f).xx);
-  m43 = float4x3((0.0f).xxx, (0.0f).xxx, (0.0f).xxx, (0.0f).xxx);
-  m44 = float4x4((0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx, (0.0f).xxxx);
-  i = 0;
-  while (true) {
-    const int x_105 = i;
-    if ((x_105 < 1)) {
-    } else {
-      break;
-    }
-    i_1 = 0;
-    while (true) {
-      const int x_112 = i_1;
-      if ((x_112 < 1)) {
-      } else {
-        break;
-      }
-      i_2 = 0;
-      while (true) {
-        const int x_119 = i_2;
-        if ((x_119 < 1)) {
-        } else {
-          break;
-        }
-        i_3 = 0;
-        while (true) {
-          const int x_126 = i_3;
-          if ((x_126 < 1)) {
-          } else {
-            break;
-          }
-          i_4 = 0;
-          while (true) {
-            const int x_133 = i_4;
-            if ((x_133 < 1)) {
-            } else {
-              break;
-            }
-            i_5 = 0;
-            while (true) {
-              const int x_140 = i_5;
-              if ((x_140 < 1)) {
-              } else {
-                break;
-              }
-              i_6 = 0;
-              while (true) {
-                const int x_147 = i_6;
-                if ((x_147 < 1)) {
-                } else {
-                  break;
-                }
-                i_7 = 0;
-                while (true) {
-                  const int x_154 = i_7;
-                  if ((x_154 < 1)) {
-                  } else {
-                    break;
-                  }
-                  i_8 = 0;
-                  while (true) {
-                    const int x_161 = i_8;
-                    if ((x_161 < 1)) {
-                    } else {
-                      break;
-                    }
-                    i_9 = 0;
-                    while (true) {
-                      const int x_168 = i_9;
-                      if ((x_168 < 1)) {
-                      } else {
-                        break;
-                      }
-                      i_10 = 0;
-                      while (true) {
-                        const int x_175 = i_10;
-                        if ((x_175 < 1)) {
-                        } else {
-                          break;
-                        }
-                        i_11 = 0;
-                        while (true) {
-                          const int x_182 = i_11;
-                          if ((x_182 < 1)) {
-                          } else {
-                            break;
-                          }
-                          i_12 = 0;
-                          while (true) {
-                            const int x_189 = i_12;
-                            if ((x_189 < 1)) {
-                            } else {
-                              break;
-                            }
-                            i_13 = 0;
-                            while (true) {
-                              const int x_196 = i_13;
-                              if ((x_196 < 1)) {
-                              } else {
-                                break;
-                              }
-                              i_14 = 0;
-                              while (true) {
-                                const int x_203 = i_14;
-                                if ((x_203 < 1)) {
-                                } else {
-                                  break;
-                                }
-                                i_15 = 0;
-                                while (true) {
-                                  const int x_210 = i_15;
-                                  if ((x_210 < 1)) {
-                                  } else {
-                                    break;
-                                  }
-                                  i_16 = 0;
-                                  while (true) {
-                                    const int x_217 = i_16;
-                                    if ((x_217 < 1)) {
-                                    } else {
-                                      break;
-                                    }
-                                    i_17 = 0;
-                                    while (true) {
-                                      const int x_224 = i_17;
-                                      if ((x_224 < 1)) {
-                                      } else {
-                                        break;
-                                      }
-                                      i_18 = 0;
-                                      while (true) {
-                                        const int x_231 = i_18;
-                                        if ((x_231 < 1)) {
-                                        } else {
-                                          break;
-                                        }
-                                        i_19 = 0;
-                                        while (true) {
-                                          const int x_238 = i_19;
-                                          if ((x_238 < 1)) {
-                                          } else {
-                                            break;
-                                          }
-                                          i_20 = 0;
-                                          while (true) {
-                                            const int x_245 = i_20;
-                                            if ((x_245 < 1)) {
-                                            } else {
-                                              break;
-                                            }
-                                            i_21 = 0;
-                                            while (true) {
-                                              const int x_252 = i_21;
-                                              if ((x_252 < 1)) {
-                                              } else {
-                                                break;
-                                              }
-                                              i_22 = 0;
-                                              while (true) {
-                                                const int x_259 = i_22;
-                                                if ((x_259 < 1)) {
-                                                } else {
-                                                  break;
-                                                }
-                                                i_23 = 0;
-                                                while (true) {
-                                                  const int x_266 = i_23;
-                                                  if ((x_266 < 1)) {
-                                                  } else {
-                                                    break;
-                                                  }
-                                                  i_24 = 0;
-                                                  while (true) {
-                                                    const int x_273 = i_24;
-                                                    if ((x_273 < 1)) {
-                                                    } else {
-                                                      break;
-                                                    }
-                                                    i_25 = 0;
-                                                    while (true) {
-                                                      const int x_280 = i_25;
-                                                      if ((x_280 < 1)) {
-                                                      } else {
-                                                        break;
-                                                      }
-                                                      i_26 = 0;
-                                                      while (true) {
-                                                        const int x_287 = i_26;
-                                                        if ((x_287 < 1)) {
-                                                        } else {
-                                                          break;
-                                                        }
-                                                        i_27 = 0;
-                                                        while (true) {
-                                                          const int x_294 = i_27;
-                                                          if ((x_294 < 1)) {
-                                                          } else {
-                                                            break;
-                                                          }
-                                                          i_28 = 0;
-                                                          while (true) {
-                                                            const int x_301 = i_28;
-                                                            if ((x_301 < 1)) {
-                                                            } else {
-                                                              break;
-                                                            }
-                                                            i_29 = 0;
-                                                            while (true) {
-                                                              const int x_308 = i_29;
-                                                              if ((x_308 < 1)) {
-                                                              } else {
-                                                                break;
-                                                              }
-                                                              i_30 = 0;
-                                                              while (true) {
-                                                                const int x_315 = i_30;
-                                                                if ((x_315 < 1)) {
-                                                                } else {
-                                                                  break;
-                                                                }
-                                                                i_31 = 0;
-                                                                while (true) {
-                                                                  const int x_322 = i_31;
-                                                                  if ((x_322 < 1)) {
-                                                                  } else {
-                                                                    break;
-                                                                  }
-                                                                  i_32 = 0;
-                                                                  while (true) {
-                                                                    const int x_329 = i_32;
-                                                                    if ((x_329 < 1)) {
-                                                                    } else {
-                                                                      break;
-                                                                    }
-                                                                    i_33 = 0;
-                                                                    while (true) {
-                                                                      const int x_336 = i_33;
-                                                                      if ((x_336 < 1)) {
-                                                                      } else {
-                                                                        break;
-                                                                      }
-                                                                      i_34 = 0;
-                                                                      while (true) {
-                                                                        const int x_343 = i_34;
-                                                                        if ((x_343 < 1)) {
-                                                                        } else {
-                                                                          break;
-                                                                        }
-                                                                        i_35 = 0;
-                                                                        while (true) {
-                                                                          const int x_350 = i_35;
-                                                                          if ((x_350 < 1)) {
-                                                                          } else {
-                                                                            break;
-                                                                          }
-                                                                          i_36 = 0;
-                                                                          while (true) {
-                                                                            const int x_357 = i_36;
-                                                                            if ((x_357 < 1)) {
-                                                                            } else {
-                                                                              break;
-                                                                            }
-                                                                            i_37 = 0;
-                                                                            while (true) {
-                                                                              const int x_364 = i_37;
-                                                                              if ((x_364 < 1)) {
-                                                                              } else {
-                                                                                break;
-                                                                              }
-                                                                              while (true) {
-                                                                                const int x_371 = x_GLF_global_loop_count;
-                                                                                x_GLF_global_loop_count = (x_371 + 1);
-                                                                                {
-                                                                                  const int x_373 = x_GLF_global_loop_count;
-                                                                                  if (!((x_373 < 98))) { break; }
-                                                                                }
-                                                                              }
-                                                                              const int x_375 = i_37;
-                                                                              const int x_376 = i_37;
-                                                                              set_scalar_float2x3(m23, x_375, x_376, 1.0f);
-                                                                              const int x_378 = i_37;
-                                                                              const int x_379 = i_37;
-                                                                              set_scalar_float2x4(m24, x_378, x_379, 1.0f);
-                                                                              const int x_381 = i_37;
-                                                                              const int x_382 = i_37;
-                                                                              set_scalar_float3x2(m32, x_381, x_382, 1.0f);
-                                                                              const int x_384 = i_37;
-                                                                              const int x_385 = i_37;
-                                                                              set_scalar_float3x3(m33, x_384, x_385, 1.0f);
-                                                                              const int x_387 = i_37;
-                                                                              const int x_388 = i_37;
-                                                                              set_scalar_float3x4(m34, x_387, x_388, 1.0f);
-                                                                              const int x_390 = i_37;
-                                                                              const int x_391 = i_37;
-                                                                              set_scalar_float4x2(m42, x_390, x_391, 1.0f);
-                                                                              const int x_393 = i_37;
-                                                                              const int x_394 = i_37;
-                                                                              set_scalar_float4x3(m43, x_393, x_394, 1.0f);
-                                                                              const int x_396 = i_37;
-                                                                              const int x_397 = i_37;
-                                                                              set_scalar_float4x4(m44, x_396, x_397, 1.0f);
-                                                                              {
-                                                                                const int x_399 = i_37;
-                                                                                i_37 = (x_399 + 1);
-                                                                              }
-                                                                            }
-                                                                            {
-                                                                              const int x_401 = i_36;
-                                                                              i_36 = (x_401 + 1);
-                                                                            }
-                                                                          }
-                                                                          {
-                                                                            const int x_403 = i_35;
-                                                                            i_35 = (x_403 + 1);
-                                                                          }
-                                                                        }
-                                                                        {
-                                                                          const int x_405 = i_34;
-                                                                          i_34 = (x_405 + 1);
-                                                                        }
-                                                                      }
-                                                                      {
-                                                                        const int x_407 = i_33;
-                                                                        i_33 = (x_407 + 1);
-                                                                      }
-                                                                    }
-                                                                    {
-                                                                      const int x_409 = i_32;
-                                                                      i_32 = (x_409 + 1);
-                                                                    }
-                                                                  }
-                                                                  {
-                                                                    const int x_411 = i_31;
-                                                                    i_31 = (x_411 + 1);
-                                                                  }
-                                                                }
-                                                                {
-                                                                  const int x_413 = i_30;
-                                                                  i_30 = (x_413 + 1);
-                                                                }
-                                                              }
-                                                              {
-                                                                const int x_415 = i_29;
-                                                                i_29 = (x_415 + 1);
-                                                              }
-                                                            }
-                                                            {
-                                                              const int x_417 = i_28;
-                                                              i_28 = (x_417 + 1);
-                                                            }
-                                                          }
-                                                          {
-                                                            const int x_419 = i_27;
-                                                            i_27 = (x_419 + 1);
-                                                          }
-                                                        }
-                                                        {
-                                                          const int x_421 = i_26;
-                                                          i_26 = (x_421 + 1);
-                                                        }
-                                                      }
-                                                      {
-                                                        const int x_423 = i_25;
-                                                        i_25 = (x_423 + 1);
-                                                      }
-                                                    }
-                                                    {
-                                                      const int x_425 = i_24;
-                                                      i_24 = (x_425 + 1);
-                                                    }
-                                                  }
-                                                  {
-                                                    const int x_427 = i_23;
-                                                    i_23 = (x_427 + 1);
-                                                  }
-                                                }
-                                                {
-                                                  const int x_429 = i_22;
-                                                  i_22 = (x_429 + 1);
-                                                }
-                                              }
-                                              {
-                                                const int x_431 = i_21;
-                                                i_21 = (x_431 + 1);
-                                              }
-                                            }
-                                            {
-                                              const int x_433 = i_20;
-                                              i_20 = (x_433 + 1);
-                                            }
-                                          }
-                                          {
-                                            const int x_435 = i_19;
-                                            i_19 = (x_435 + 1);
-                                          }
-                                        }
-                                        {
-                                          const int x_437 = i_18;
-                                          i_18 = (x_437 + 1);
-                                        }
-                                      }
-                                      {
-                                        const int x_439 = i_17;
-                                        i_17 = (x_439 + 1);
-                                      }
-                                    }
-                                    {
-                                      const int x_441 = i_16;
-                                      i_16 = (x_441 + 1);
-                                    }
-                                  }
-                                  {
-                                    const int x_443 = i_15;
-                                    i_15 = (x_443 + 1);
-                                  }
-                                }
-                                {
-                                  const int x_445 = i_14;
-                                  i_14 = (x_445 + 1);
-                                }
-                              }
-                              {
-                                const int x_447 = i_13;
-                                i_13 = (x_447 + 1);
-                              }
-                            }
-                            {
-                              const int x_449 = i_12;
-                              i_12 = (x_449 + 1);
-                            }
-                          }
-                          {
-                            const int x_451 = i_11;
-                            i_11 = (x_451 + 1);
-                          }
-                        }
-                        {
-                          const int x_453 = i_10;
-                          i_10 = (x_453 + 1);
-                        }
-                      }
-                      {
-                        const int x_455 = i_9;
-                        i_9 = (x_455 + 1);
-                      }
-                    }
-                    {
-                      const int x_457 = i_8;
-                      i_8 = (x_457 + 1);
-                    }
-                  }
-                  {
-                    const int x_459 = i_7;
-                    i_7 = (x_459 + 1);
-                  }
-                }
-                {
-                  const int x_461 = i_6;
-                  i_6 = (x_461 + 1);
-                }
-              }
-              {
-                const int x_463 = i_5;
-                i_5 = (x_463 + 1);
-              }
-            }
-            {
-              const int x_465 = i_4;
-              i_4 = (x_465 + 1);
-            }
-          }
-          {
-            const int x_467 = i_3;
-            i_3 = (x_467 + 1);
-          }
-        }
-        {
-          const int x_469 = i_2;
-          i_2 = (x_469 + 1);
-        }
-      }
-      {
-        const int x_471 = i_1;
-        i_1 = (x_471 + 1);
-      }
-    }
-    {
-      const int x_473 = i;
-      i = (x_473 + 1);
-    }
-  }
-  sum = 0.0f;
-  r = 0;
-  while (true) {
-    const int x_479 = x_GLF_global_loop_count;
-    if ((x_479 < 100)) {
-    } else {
-      break;
-    }
-    const int x_482 = x_GLF_global_loop_count;
-    x_GLF_global_loop_count = (x_482 + 1);
-    const int x_484 = r;
-    const float x_486 = m23[0][x_484];
-    const float x_487 = sum;
-    sum = (x_487 + x_486);
-    const int x_489 = r;
-    const float x_491 = m24[0][x_489];
-    const float x_492 = sum;
-    sum = (x_492 + x_491);
-    const int x_494 = r;
-    const float x_496 = m32[0][x_494];
-    const float x_497 = sum;
-    sum = (x_497 + x_496);
-    const int x_499 = r;
-    const float x_501 = m33[0][x_499];
-    const float x_502 = sum;
-    sum = (x_502 + x_501);
-    const int x_504 = r;
-    const float x_506 = m34[0][x_504];
-    const float x_507 = sum;
-    sum = (x_507 + x_506);
-    const int x_509 = r;
-    const float x_511 = m42[0][x_509];
-    const float x_512 = sum;
-    sum = (x_512 + x_511);
-    const int x_514 = r;
-    const float x_516 = m43[0][x_514];
-    const float x_517 = sum;
-    sum = (x_517 + x_516);
-    const int x_519 = r;
-    const float x_521 = m44[0][x_519];
-    const float x_522 = sum;
-    sum = (x_522 + x_521);
-    {
-      const int x_524 = r;
-      r = (x_524 + 1);
-    }
-  }
-  const float x_526 = sum;
-  if ((x_526 == 8.0f)) {
-    x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
-  } else {
-    x_GLF_color = (0.0f).xxxx;
-  }
-  return;
-}
-
-struct main_out {
-  float4 x_GLF_color_1;
-};
-struct tint_symbol {
-  float4 x_GLF_color_1 : SV_Target0;
-};
-
-main_out main_inner() {
-  main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
-  return tint_symbol_1;
-}
-
-tint_symbol main() {
-  const main_out inner_result = main_inner();
-  tint_symbol wrapper_result = (tint_symbol)0;
-  wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
-  return wrapper_result;
-}
+test timed out after 2m0s
\ No newline at end of file
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.fxc.hlsl
index dde0014..f0dd30c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -87,7 +87,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002712F4D00F0(42,11-18): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x000002712F4D00F0(34,9-19): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x000002712F4D00F0(26,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001BD40339FD0(42,11-18): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001BD40339FD0(34,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001BD40339FD0(26,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.fxc.hlsl
index cfb54ba..ade0520 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loop-undefined-smoothstep-never-executed/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -106,7 +106,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022794D365A0(50,11-18): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000022794D365A0(39,9-19): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x0000022794D365A0(29,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000206110E90F0(50,11-18): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000206110E90F0(39,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000206110E90F0(29,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.fxc.hlsl
index 14b3bb2..fdbd404 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.spvasm.expected.fxc.hlsl
@@ -29,262 +29,183 @@
   float sum = 0.0f;
   int r = 0;
   x_GLF_global_loop_count = 0;
-  const float x_53 = asfloat(x_7[1].x);
-  f = x_53;
-  const int x_55 = asint(x_10[1].x);
-  i = x_55;
+  f = asfloat(x_7[1].x);
+  i = asint(x_10[1].x);
   while (true) {
-    const int x_60 = i;
-    const int x_62 = asint(x_10[0].x);
-    if ((x_60 < x_62)) {
+    if ((i < asint(x_10[0].x))) {
     } else {
       break;
     }
-    const int x_66 = asint(x_10[1].x);
-    i_1 = x_66;
+    i_1 = asint(x_10[1].x);
     while (true) {
-      const int x_71 = i_1;
-      const int x_73 = asint(x_10[0].x);
-      if ((x_71 < x_73)) {
+      if ((i_1 < asint(x_10[0].x))) {
       } else {
         break;
       }
-      const int x_77 = asint(x_10[1].x);
-      i_2 = x_77;
+      i_2 = asint(x_10[1].x);
       while (true) {
-        const int x_82 = i_2;
-        const int x_84 = asint(x_10[0].x);
-        if ((x_82 < x_84)) {
+        if ((i_2 < asint(x_10[0].x))) {
         } else {
           break;
         }
-        const int x_88 = asint(x_10[1].x);
-        i_3 = x_88;
+        i_3 = asint(x_10[1].x);
         while (true) {
-          const int x_93 = i_3;
-          const int x_95 = asint(x_10[0].x);
-          if ((x_93 < x_95)) {
+          if ((i_3 < asint(x_10[0].x))) {
           } else {
             break;
           }
-          const int x_99 = asint(x_10[1].x);
-          i_4 = x_99;
+          i_4 = asint(x_10[1].x);
           while (true) {
-            const int x_104 = i_4;
-            const int x_106 = asint(x_10[0].x);
-            if ((x_104 < x_106)) {
+            if ((i_4 < asint(x_10[0].x))) {
             } else {
               break;
             }
-            const int x_110 = asint(x_10[1].x);
-            i_5 = x_110;
+            i_5 = asint(x_10[1].x);
             while (true) {
-              const int x_115 = i_5;
-              const int x_117 = asint(x_10[0].x);
-              if ((x_115 < x_117)) {
+              if ((i_5 < asint(x_10[0].x))) {
               } else {
                 break;
               }
-              const int x_121 = asint(x_10[1].x);
-              i_6 = x_121;
+              i_6 = asint(x_10[1].x);
               while (true) {
-                const int x_126 = i_6;
-                const int x_128 = asint(x_10[0].x);
-                if ((x_126 < x_128)) {
+                if ((i_6 < asint(x_10[0].x))) {
                 } else {
                   break;
                 }
-                const int x_132 = asint(x_10[1].x);
-                i_7 = x_132;
+                i_7 = asint(x_10[1].x);
                 while (true) {
-                  const int x_137 = i_7;
-                  const int x_139 = asint(x_10[0].x);
-                  if ((x_137 < x_139)) {
+                  if ((i_7 < asint(x_10[0].x))) {
                   } else {
                     break;
                   }
-                  const int x_143 = asint(x_10[1].x);
-                  i_8 = x_143;
+                  i_8 = asint(x_10[1].x);
                   while (true) {
-                    const int x_148 = i_8;
-                    const int x_150 = asint(x_10[0].x);
-                    if ((x_148 < x_150)) {
+                    if ((i_8 < asint(x_10[0].x))) {
                     } else {
                       break;
                     }
-                    const int x_154 = asint(x_10[1].x);
-                    i_9 = x_154;
+                    i_9 = asint(x_10[1].x);
                     while (true) {
-                      const int x_159 = i_9;
-                      const int x_161 = asint(x_10[0].x);
-                      if ((x_159 < x_161)) {
+                      if ((i_9 < asint(x_10[0].x))) {
                       } else {
                         break;
                       }
-                      const int x_165 = asint(x_10[1].x);
-                      i_10 = x_165;
+                      i_10 = asint(x_10[1].x);
                       while (true) {
-                        const int x_170 = i_10;
-                        const int x_172 = asint(x_10[0].x);
-                        if ((x_170 < x_172)) {
+                        if ((i_10 < asint(x_10[0].x))) {
                         } else {
                           break;
                         }
-                        const int x_176 = asint(x_10[1].x);
-                        i_11 = x_176;
+                        i_11 = asint(x_10[1].x);
                         while (true) {
-                          const int x_181 = i_11;
-                          const int x_183 = asint(x_10[2].x);
-                          if ((x_181 < x_183)) {
+                          if ((i_11 < asint(x_10[2].x))) {
                           } else {
                             break;
                           }
-                          const int x_187 = asint(x_10[1].x);
-                          i_12 = x_187;
+                          i_12 = asint(x_10[1].x);
                           while (true) {
-                            const int x_192 = i_12;
-                            const int x_194 = asint(x_10[0].x);
-                            if ((x_192 < x_194)) {
+                            if ((i_12 < asint(x_10[0].x))) {
                             } else {
                               break;
                             }
-                            const int x_198 = asint(x_10[1].x);
-                            i_13 = x_198;
+                            i_13 = asint(x_10[1].x);
                             while (true) {
-                              const int x_203 = i_13;
-                              const int x_205 = asint(x_10[0].x);
-                              if ((x_203 < x_205)) {
+                              if ((i_13 < asint(x_10[0].x))) {
                               } else {
                                 break;
                               }
-                              const int x_209 = asint(x_10[1].x);
-                              i_14 = x_209;
+                              i_14 = asint(x_10[1].x);
                               while (true) {
-                                const int x_214 = i_14;
-                                const int x_216 = asint(x_10[2].x);
-                                if ((x_214 < x_216)) {
+                                if ((i_14 < asint(x_10[2].x))) {
                                 } else {
                                   break;
                                 }
                                 while (true) {
-                                  const int x_223 = x_GLF_global_loop_count;
-                                  x_GLF_global_loop_count = (x_223 + 1);
+                                  x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
                                   {
-                                    const int x_225 = x_GLF_global_loop_count;
-                                    const int x_227 = asint(x_10[3].x);
+                                    int x_225 = x_GLF_global_loop_count;
+                                    int x_227 = asint(x_10[3].x);
                                     if (!((x_225 < (100 - x_227)))) { break; }
                                   }
                                 }
-                                const float x_231 = asfloat(x_7[0].x);
-                                const float x_232 = f;
-                                f = (x_232 + x_231);
+                                f = (f + asfloat(x_7[0].x));
                                 {
-                                  const int x_234 = i_14;
-                                  i_14 = (x_234 + 1);
+                                  i_14 = (i_14 + 1);
                                 }
                               }
                               {
-                                const int x_236 = i_13;
-                                i_13 = (x_236 + 1);
+                                i_13 = (i_13 + 1);
                               }
                             }
                             {
-                              const int x_238 = i_12;
-                              i_12 = (x_238 + 1);
+                              i_12 = (i_12 + 1);
                             }
                           }
                           {
-                            const int x_240 = i_11;
-                            i_11 = (x_240 + 1);
+                            i_11 = (i_11 + 1);
                           }
                         }
                         {
-                          const int x_242 = i_10;
-                          i_10 = (x_242 + 1);
+                          i_10 = (i_10 + 1);
                         }
                       }
                       {
-                        const int x_244 = i_9;
-                        i_9 = (x_244 + 1);
+                        i_9 = (i_9 + 1);
                       }
                     }
                     {
-                      const int x_246 = i_8;
-                      i_8 = (x_246 + 1);
+                      i_8 = (i_8 + 1);
                     }
                   }
                   {
-                    const int x_248 = i_7;
-                    i_7 = (x_248 + 1);
+                    i_7 = (i_7 + 1);
                   }
                 }
                 {
-                  const int x_250 = i_6;
-                  i_6 = (x_250 + 1);
+                  i_6 = (i_6 + 1);
                 }
               }
               {
-                const int x_252 = i_5;
-                i_5 = (x_252 + 1);
+                i_5 = (i_5 + 1);
               }
             }
             {
-              const int x_254 = i_4;
-              i_4 = (x_254 + 1);
+              i_4 = (i_4 + 1);
             }
           }
           {
-            const int x_256 = i_3;
-            i_3 = (x_256 + 1);
+            i_3 = (i_3 + 1);
           }
         }
         {
-          const int x_258 = i_2;
-          i_2 = (x_258 + 1);
+          i_2 = (i_2 + 1);
         }
       }
       {
-        const int x_260 = i_1;
-        i_1 = (x_260 + 1);
+        i_1 = (i_1 + 1);
       }
     }
     {
-      const int x_262 = i;
-      i = (x_262 + 1);
+      i = (i + 1);
     }
   }
-  const float x_265 = asfloat(x_7[1].x);
-  sum = x_265;
-  const int x_267 = asint(x_10[1].x);
-  r = x_267;
+  sum = asfloat(x_7[1].x);
+  r = asint(x_10[1].x);
   while (true) {
-    const int x_272 = x_GLF_global_loop_count;
-    if ((x_272 < 100)) {
+    if ((x_GLF_global_loop_count < 100)) {
     } else {
       break;
     }
-    const int x_275 = x_GLF_global_loop_count;
-    x_GLF_global_loop_count = (x_275 + 1);
-    const float x_277 = f;
-    const float x_278 = sum;
-    sum = (x_278 + x_277);
+    x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+    sum = (sum + f);
     {
-      const int x_280 = r;
-      r = (x_280 + 1);
+      r = (r + 1);
     }
   }
-  const float x_282 = sum;
-  const float x_284 = asfloat(x_7[2].x);
-  if ((x_282 == x_284)) {
-    const int x_290 = asint(x_10[0].x);
-    const int x_293 = asint(x_10[1].x);
-    const int x_296 = asint(x_10[1].x);
-    const int x_299 = asint(x_10[0].x);
-    x_GLF_color = float4(float(x_290), float(x_293), float(x_296), float(x_299));
+  if ((sum == asfloat(x_7[2].x))) {
+    x_GLF_color = float4(float(asint(x_10[0].x)), float(asint(x_10[1].x)), float(asint(x_10[1].x)), float(asint(x_10[0].x)));
   } else {
-    const int x_303 = asint(x_10[1].x);
-    const float x_304 = float(x_303);
-    x_GLF_color = float4(x_304, x_304, x_304, x_304);
+    x_GLF_color = float4((float(asint(x_10[1].x))).xxxx);
   }
   return;
 }
@@ -298,12 +219,12 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.fxc.hlsl
index 14b3bb2..a16f576 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-nested-loops-global-loop-counter-do-while-accumulate-float/0-opt.wgsl.expected.fxc.hlsl
@@ -29,261 +29,261 @@
   float sum = 0.0f;
   int r = 0;
   x_GLF_global_loop_count = 0;
-  const float x_53 = asfloat(x_7[1].x);
+  float x_53 = asfloat(x_7[1].x);
   f = x_53;
-  const int x_55 = asint(x_10[1].x);
+  int x_55 = asint(x_10[1].x);
   i = x_55;
   while (true) {
-    const int x_60 = i;
-    const int x_62 = asint(x_10[0].x);
+    int x_60 = i;
+    int x_62 = asint(x_10[0].x);
     if ((x_60 < x_62)) {
     } else {
       break;
     }
-    const int x_66 = asint(x_10[1].x);
+    int x_66 = asint(x_10[1].x);
     i_1 = x_66;
     while (true) {
-      const int x_71 = i_1;
-      const int x_73 = asint(x_10[0].x);
+      int x_71 = i_1;
+      int x_73 = asint(x_10[0].x);
       if ((x_71 < x_73)) {
       } else {
         break;
       }
-      const int x_77 = asint(x_10[1].x);
+      int x_77 = asint(x_10[1].x);
       i_2 = x_77;
       while (true) {
-        const int x_82 = i_2;
-        const int x_84 = asint(x_10[0].x);
+        int x_82 = i_2;
+        int x_84 = asint(x_10[0].x);
         if ((x_82 < x_84)) {
         } else {
           break;
         }
-        const int x_88 = asint(x_10[1].x);
+        int x_88 = asint(x_10[1].x);
         i_3 = x_88;
         while (true) {
-          const int x_93 = i_3;
-          const int x_95 = asint(x_10[0].x);
+          int x_93 = i_3;
+          int x_95 = asint(x_10[0].x);
           if ((x_93 < x_95)) {
           } else {
             break;
           }
-          const int x_99 = asint(x_10[1].x);
+          int x_99 = asint(x_10[1].x);
           i_4 = x_99;
           while (true) {
-            const int x_104 = i_4;
-            const int x_106 = asint(x_10[0].x);
+            int x_104 = i_4;
+            int x_106 = asint(x_10[0].x);
             if ((x_104 < x_106)) {
             } else {
               break;
             }
-            const int x_110 = asint(x_10[1].x);
+            int x_110 = asint(x_10[1].x);
             i_5 = x_110;
             while (true) {
-              const int x_115 = i_5;
-              const int x_117 = asint(x_10[0].x);
+              int x_115 = i_5;
+              int x_117 = asint(x_10[0].x);
               if ((x_115 < x_117)) {
               } else {
                 break;
               }
-              const int x_121 = asint(x_10[1].x);
+              int x_121 = asint(x_10[1].x);
               i_6 = x_121;
               while (true) {
-                const int x_126 = i_6;
-                const int x_128 = asint(x_10[0].x);
+                int x_126 = i_6;
+                int x_128 = asint(x_10[0].x);
                 if ((x_126 < x_128)) {
                 } else {
                   break;
                 }
-                const int x_132 = asint(x_10[1].x);
+                int x_132 = asint(x_10[1].x);
                 i_7 = x_132;
                 while (true) {
-                  const int x_137 = i_7;
-                  const int x_139 = asint(x_10[0].x);
+                  int x_137 = i_7;
+                  int x_139 = asint(x_10[0].x);
                   if ((x_137 < x_139)) {
                   } else {
                     break;
                   }
-                  const int x_143 = asint(x_10[1].x);
+                  int x_143 = asint(x_10[1].x);
                   i_8 = x_143;
                   while (true) {
-                    const int x_148 = i_8;
-                    const int x_150 = asint(x_10[0].x);
+                    int x_148 = i_8;
+                    int x_150 = asint(x_10[0].x);
                     if ((x_148 < x_150)) {
                     } else {
                       break;
                     }
-                    const int x_154 = asint(x_10[1].x);
+                    int x_154 = asint(x_10[1].x);
                     i_9 = x_154;
                     while (true) {
-                      const int x_159 = i_9;
-                      const int x_161 = asint(x_10[0].x);
+                      int x_159 = i_9;
+                      int x_161 = asint(x_10[0].x);
                       if ((x_159 < x_161)) {
                       } else {
                         break;
                       }
-                      const int x_165 = asint(x_10[1].x);
+                      int x_165 = asint(x_10[1].x);
                       i_10 = x_165;
                       while (true) {
-                        const int x_170 = i_10;
-                        const int x_172 = asint(x_10[0].x);
+                        int x_170 = i_10;
+                        int x_172 = asint(x_10[0].x);
                         if ((x_170 < x_172)) {
                         } else {
                           break;
                         }
-                        const int x_176 = asint(x_10[1].x);
+                        int x_176 = asint(x_10[1].x);
                         i_11 = x_176;
                         while (true) {
-                          const int x_181 = i_11;
-                          const int x_183 = asint(x_10[2].x);
+                          int x_181 = i_11;
+                          int x_183 = asint(x_10[2].x);
                           if ((x_181 < x_183)) {
                           } else {
                             break;
                           }
-                          const int x_187 = asint(x_10[1].x);
+                          int x_187 = asint(x_10[1].x);
                           i_12 = x_187;
                           while (true) {
-                            const int x_192 = i_12;
-                            const int x_194 = asint(x_10[0].x);
+                            int x_192 = i_12;
+                            int x_194 = asint(x_10[0].x);
                             if ((x_192 < x_194)) {
                             } else {
                               break;
                             }
-                            const int x_198 = asint(x_10[1].x);
+                            int x_198 = asint(x_10[1].x);
                             i_13 = x_198;
                             while (true) {
-                              const int x_203 = i_13;
-                              const int x_205 = asint(x_10[0].x);
+                              int x_203 = i_13;
+                              int x_205 = asint(x_10[0].x);
                               if ((x_203 < x_205)) {
                               } else {
                                 break;
                               }
-                              const int x_209 = asint(x_10[1].x);
+                              int x_209 = asint(x_10[1].x);
                               i_14 = x_209;
                               while (true) {
-                                const int x_214 = i_14;
-                                const int x_216 = asint(x_10[2].x);
+                                int x_214 = i_14;
+                                int x_216 = asint(x_10[2].x);
                                 if ((x_214 < x_216)) {
                                 } else {
                                   break;
                                 }
                                 while (true) {
-                                  const int x_223 = x_GLF_global_loop_count;
+                                  int x_223 = x_GLF_global_loop_count;
                                   x_GLF_global_loop_count = (x_223 + 1);
                                   {
-                                    const int x_225 = x_GLF_global_loop_count;
-                                    const int x_227 = asint(x_10[3].x);
+                                    int x_225 = x_GLF_global_loop_count;
+                                    int x_227 = asint(x_10[3].x);
                                     if (!((x_225 < (100 - x_227)))) { break; }
                                   }
                                 }
-                                const float x_231 = asfloat(x_7[0].x);
-                                const float x_232 = f;
+                                float x_231 = asfloat(x_7[0].x);
+                                float x_232 = f;
                                 f = (x_232 + x_231);
                                 {
-                                  const int x_234 = i_14;
+                                  int x_234 = i_14;
                                   i_14 = (x_234 + 1);
                                 }
                               }
                               {
-                                const int x_236 = i_13;
+                                int x_236 = i_13;
                                 i_13 = (x_236 + 1);
                               }
                             }
                             {
-                              const int x_238 = i_12;
+                              int x_238 = i_12;
                               i_12 = (x_238 + 1);
                             }
                           }
                           {
-                            const int x_240 = i_11;
+                            int x_240 = i_11;
                             i_11 = (x_240 + 1);
                           }
                         }
                         {
-                          const int x_242 = i_10;
+                          int x_242 = i_10;
                           i_10 = (x_242 + 1);
                         }
                       }
                       {
-                        const int x_244 = i_9;
+                        int x_244 = i_9;
                         i_9 = (x_244 + 1);
                       }
                     }
                     {
-                      const int x_246 = i_8;
+                      int x_246 = i_8;
                       i_8 = (x_246 + 1);
                     }
                   }
                   {
-                    const int x_248 = i_7;
+                    int x_248 = i_7;
                     i_7 = (x_248 + 1);
                   }
                 }
                 {
-                  const int x_250 = i_6;
+                  int x_250 = i_6;
                   i_6 = (x_250 + 1);
                 }
               }
               {
-                const int x_252 = i_5;
+                int x_252 = i_5;
                 i_5 = (x_252 + 1);
               }
             }
             {
-              const int x_254 = i_4;
+              int x_254 = i_4;
               i_4 = (x_254 + 1);
             }
           }
           {
-            const int x_256 = i_3;
+            int x_256 = i_3;
             i_3 = (x_256 + 1);
           }
         }
         {
-          const int x_258 = i_2;
+          int x_258 = i_2;
           i_2 = (x_258 + 1);
         }
       }
       {
-        const int x_260 = i_1;
+        int x_260 = i_1;
         i_1 = (x_260 + 1);
       }
     }
     {
-      const int x_262 = i;
+      int x_262 = i;
       i = (x_262 + 1);
     }
   }
-  const float x_265 = asfloat(x_7[1].x);
+  float x_265 = asfloat(x_7[1].x);
   sum = x_265;
-  const int x_267 = asint(x_10[1].x);
+  int x_267 = asint(x_10[1].x);
   r = x_267;
   while (true) {
-    const int x_272 = x_GLF_global_loop_count;
+    int x_272 = x_GLF_global_loop_count;
     if ((x_272 < 100)) {
     } else {
       break;
     }
-    const int x_275 = x_GLF_global_loop_count;
+    int x_275 = x_GLF_global_loop_count;
     x_GLF_global_loop_count = (x_275 + 1);
-    const float x_277 = f;
-    const float x_278 = sum;
+    float x_277 = f;
+    float x_278 = sum;
     sum = (x_278 + x_277);
     {
-      const int x_280 = r;
+      int x_280 = r;
       r = (x_280 + 1);
     }
   }
-  const float x_282 = sum;
-  const float x_284 = asfloat(x_7[2].x);
+  float x_282 = sum;
+  float x_284 = asfloat(x_7[2].x);
   if ((x_282 == x_284)) {
-    const int x_290 = asint(x_10[0].x);
-    const int x_293 = asint(x_10[1].x);
-    const int x_296 = asint(x_10[1].x);
-    const int x_299 = asint(x_10[0].x);
+    int x_290 = asint(x_10[0].x);
+    int x_293 = asint(x_10[1].x);
+    int x_296 = asint(x_10[1].x);
+    int x_299 = asint(x_10[0].x);
     x_GLF_color = float4(float(x_290), float(x_293), float(x_296), float(x_299));
   } else {
-    const int x_303 = asint(x_10[1].x);
-    const float x_304 = float(x_303);
+    int x_303 = asint(x_10[1].x);
+    float x_304 = float(x_303);
     x_GLF_color = float4(x_304, x_304, x_304, x_304);
   }
   return;
@@ -298,12 +298,12 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.fxc.hlsl
index ef1d527..ea73062 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -83,7 +83,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F1F504F550(43,11-17): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x000001F1F504F550(33,9-19): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x000001F1F504F550(25,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000026BF2D2D730(43,11-17): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000026BF2D2D730(33,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000026BF2D2D730(25,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.fxc.hlsl
index aac1a27..2fab403 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-reinitialize-matrix-after-undefined-value/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -103,7 +103,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000012918926630(50,11-17): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000012918926630(38,9-19): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x0000012918926630(28,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000022A3F426BD0(50,11-17): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000022A3F426BD0(38,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000022A3F426BD0(28,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.fxc.hlsl
index 729f849..0cc29f7 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.fxc.hlsl
@@ -6,21 +6,13 @@
 };
 
 void main_1() {
-  const int x_22 = asint(x_5[0].x);
-  const int x_25 = asint(x_5[1].x);
-  const int x_28 = asint(x_5[1].x);
-  const int x_31 = asint(x_5[0].x);
-  x_GLF_color = float4(float(x_22), float(x_25), float(x_28), float(x_31));
-  const int x_35 = asint(x_5[1].x);
-  const int x_37 = asint(x_5[0].x);
-  if ((x_35 > x_37)) {
+  x_GLF_color = float4(float(asint(x_5[0].x)), float(asint(x_5[1].x)), float(asint(x_5[1].x)), float(asint(x_5[0].x)));
+  if ((asint(x_5[1].x) > asint(x_5[0].x))) {
     while (true) {
-      const int x_46 = asint(x_5[0].x);
-      const float x_47 = float(x_46);
-      x_GLF_color = float4(x_47, x_47, x_47, x_47);
+      x_GLF_color = float4((float(asint(x_5[0].x))).xxxx);
       {
-        const int x_50 = asint(x_5[1].x);
-        const int x_52 = asint(x_5[0].x);
+        int x_50 = asint(x_5[1].x);
+        int x_52 = asint(x_5[0].x);
         if (!((x_50 > x_52))) { break; }
       }
     }
@@ -38,13 +30,16 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001BCBE360510(9,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.fxc.hlsl
index b71361e..03982e5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -48,5 +48,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025185E67510(22,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001E941FAF310(22,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.fxc.hlsl
index 729f849..cc62fe1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.fxc.hlsl
@@ -6,21 +6,21 @@
 };
 
 void main_1() {
-  const int x_22 = asint(x_5[0].x);
-  const int x_25 = asint(x_5[1].x);
-  const int x_28 = asint(x_5[1].x);
-  const int x_31 = asint(x_5[0].x);
+  int x_22 = asint(x_5[0].x);
+  int x_25 = asint(x_5[1].x);
+  int x_28 = asint(x_5[1].x);
+  int x_31 = asint(x_5[0].x);
   x_GLF_color = float4(float(x_22), float(x_25), float(x_28), float(x_31));
-  const int x_35 = asint(x_5[1].x);
-  const int x_37 = asint(x_5[0].x);
+  int x_35 = asint(x_5[1].x);
+  int x_37 = asint(x_5[0].x);
   if ((x_35 > x_37)) {
     while (true) {
-      const int x_46 = asint(x_5[0].x);
-      const float x_47 = float(x_46);
+      int x_46 = asint(x_5[0].x);
+      float x_47 = float(x_46);
       x_GLF_color = float4(x_47, x_47, x_47, x_47);
       {
-        const int x_50 = asint(x_5[1].x);
-        const int x_52 = asint(x_5[0].x);
+        int x_50 = asint(x_5[1].x);
+        int x_52 = asint(x_5[0].x);
         if (!((x_50 > x_52))) { break; }
       }
     }
@@ -38,13 +38,16 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000236D3D741F0(15,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.fxc.hlsl
index fa24031..6f506fa 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-return-after-do-while/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -55,5 +55,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001FD4D227010(27,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x000001724153F9A0(27,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.fxc.hlsl
index a973bad..c097554 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-struct-float-array-mix-uniform-vectors/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -92,5 +92,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000016A5F895D30(44,3-36): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001BA7BD5B630(44,3-36): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.fxc.hlsl
index 647c433..e5190f6 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -99,5 +99,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017FBC643C10(25,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000024D2CA165E0(25,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.fxc.hlsl
index deb572a..12fb663 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-for-for-for/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -114,5 +114,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023C51E16140(26,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001411AB93CD0(26,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.dxc.hlsl
index cad1998..e5807a1 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.dxc.hlsl
@@ -13,14 +13,10 @@
 
 void main_1() {
   int i = 0;
-  const float x_38 = asfloat(x_5[0].x);
-  x_GLF_color = float4(x_38, x_38, x_38, x_38);
-  const float x_41 = asfloat(x_7[0].x);
-  const float x_43 = asfloat(x_5[0].x);
-  if ((x_41 > x_43)) {
+  x_GLF_color = float4((asfloat(x_5[0].x)).xxxx);
+  if ((asfloat(x_7[0].x) > asfloat(x_5[0].x))) {
     while (true) {
-      const float x_53 = asfloat(x_5[1].x);
-      x_GLF_color = float4(x_53, x_53, x_53, x_53);
+      x_GLF_color = float4((asfloat(x_5[1].x)).xxxx);
       {
         if (false) { break; }
       }
@@ -32,30 +28,22 @@
         } else {
           break;
         }
-        const int x_13 = asint(x_10[1].x);
-        i = x_13;
+        i = asint(x_10[1].x);
         while (true) {
-          const int x_14 = i;
-          const int x_15 = asint(x_10[0].x);
-          if ((x_14 < x_15)) {
+          if ((i < asint(x_10[0].x))) {
           } else {
             break;
           }
-          const float x_73 = asfloat(x_5[1].x);
-          const float x_75 = asfloat(x_5[0].x);
-          const float x_77 = asfloat(x_5[0].x);
-          const float x_79 = asfloat(x_5[1].x);
-          x_GLF_color = float4(x_73, x_75, x_77, x_79);
+          x_GLF_color = float4(asfloat(x_5[1].x), asfloat(x_5[0].x), asfloat(x_5[0].x), asfloat(x_5[1].x));
           {
-            const int x_16 = i;
-            i = (x_16 + 1);
+            i = (i + 1);
           }
         }
         break;
       }
       {
-        const float x_82 = asfloat(x_7[0].x);
-        const float x_84 = asfloat(x_5[0].x);
+        float x_82 = asfloat(x_7[0].x);
+        float x_84 = asfloat(x_5[0].x);
         if (!((x_82 > x_84))) { break; }
       }
     }
@@ -72,22 +60,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:77: error: Loop must have break.
+hlsl.hlsl:65: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.fxc.hlsl
index 0323a15..84958cb 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.fxc.hlsl
@@ -13,14 +13,10 @@
 
 void main_1() {
   int i = 0;
-  const float x_38 = asfloat(x_5[0].x);
-  x_GLF_color = float4(x_38, x_38, x_38, x_38);
-  const float x_41 = asfloat(x_7[0].x);
-  const float x_43 = asfloat(x_5[0].x);
-  if ((x_41 > x_43)) {
+  x_GLF_color = float4((asfloat(x_5[0].x)).xxxx);
+  if ((asfloat(x_7[0].x) > asfloat(x_5[0].x))) {
     while (true) {
-      const float x_53 = asfloat(x_5[1].x);
-      x_GLF_color = float4(x_53, x_53, x_53, x_53);
+      x_GLF_color = float4((asfloat(x_5[1].x)).xxxx);
       {
         if (false) { break; }
       }
@@ -32,30 +28,22 @@
         } else {
           break;
         }
-        const int x_13 = asint(x_10[1].x);
-        i = x_13;
+        i = asint(x_10[1].x);
         while (true) {
-          const int x_14 = i;
-          const int x_15 = asint(x_10[0].x);
-          if ((x_14 < x_15)) {
+          if ((i < asint(x_10[0].x))) {
           } else {
             break;
           }
-          const float x_73 = asfloat(x_5[1].x);
-          const float x_75 = asfloat(x_5[0].x);
-          const float x_77 = asfloat(x_5[0].x);
-          const float x_79 = asfloat(x_5[1].x);
-          x_GLF_color = float4(x_73, x_75, x_77, x_79);
+          x_GLF_color = float4(asfloat(x_5[1].x), asfloat(x_5[0].x), asfloat(x_5[0].x), asfloat(x_5[1].x));
           {
-            const int x_16 = i;
-            i = (x_16 + 1);
+            i = (i + 1);
           }
         }
         break;
       }
       {
-        const float x_82 = asfloat(x_7[0].x);
-        const float x_84 = asfloat(x_5[0].x);
+        float x_82 = asfloat(x_7[0].x);
+        float x_84 = asfloat(x_5[0].x);
         if (!((x_82 > x_84))) { break; }
       }
     }
@@ -72,13 +60,16 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020C03C34A30(16,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.fxc.hlsl
index 57f0bf0..2fb9170 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -87,5 +87,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000149023C0AD0(26,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000021B71D338A0(26,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.dxc.hlsl
index cad1998..7e54a5f 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.dxc.hlsl
@@ -13,13 +13,13 @@
 
 void main_1() {
   int i = 0;
-  const float x_38 = asfloat(x_5[0].x);
+  float x_38 = asfloat(x_5[0].x);
   x_GLF_color = float4(x_38, x_38, x_38, x_38);
-  const float x_41 = asfloat(x_7[0].x);
-  const float x_43 = asfloat(x_5[0].x);
+  float x_41 = asfloat(x_7[0].x);
+  float x_43 = asfloat(x_5[0].x);
   if ((x_41 > x_43)) {
     while (true) {
-      const float x_53 = asfloat(x_5[1].x);
+      float x_53 = asfloat(x_5[1].x);
       x_GLF_color = float4(x_53, x_53, x_53, x_53);
       {
         if (false) { break; }
@@ -32,30 +32,30 @@
         } else {
           break;
         }
-        const int x_13 = asint(x_10[1].x);
+        int x_13 = asint(x_10[1].x);
         i = x_13;
         while (true) {
-          const int x_14 = i;
-          const int x_15 = asint(x_10[0].x);
+          int x_14 = i;
+          int x_15 = asint(x_10[0].x);
           if ((x_14 < x_15)) {
           } else {
             break;
           }
-          const float x_73 = asfloat(x_5[1].x);
-          const float x_75 = asfloat(x_5[0].x);
-          const float x_77 = asfloat(x_5[0].x);
-          const float x_79 = asfloat(x_5[1].x);
+          float x_73 = asfloat(x_5[1].x);
+          float x_75 = asfloat(x_5[0].x);
+          float x_77 = asfloat(x_5[0].x);
+          float x_79 = asfloat(x_5[1].x);
           x_GLF_color = float4(x_73, x_75, x_77, x_79);
           {
-            const int x_16 = i;
+            int x_16 = i;
             i = (x_16 + 1);
           }
         }
         break;
       }
       {
-        const float x_82 = asfloat(x_7[0].x);
-        const float x_84 = asfloat(x_5[0].x);
+        float x_82 = asfloat(x_7[0].x);
+        float x_84 = asfloat(x_5[0].x);
         if (!((x_82 > x_84))) { break; }
       }
     }
@@ -72,22 +72,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:77: error: Loop must have break.
+hlsl.hlsl:77: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.fxc.hlsl
index 0323a15..8f3bea4 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.fxc.hlsl
@@ -13,13 +13,13 @@
 
 void main_1() {
   int i = 0;
-  const float x_38 = asfloat(x_5[0].x);
+  float x_38 = asfloat(x_5[0].x);
   x_GLF_color = float4(x_38, x_38, x_38, x_38);
-  const float x_41 = asfloat(x_7[0].x);
-  const float x_43 = asfloat(x_5[0].x);
+  float x_41 = asfloat(x_7[0].x);
+  float x_43 = asfloat(x_5[0].x);
   if ((x_41 > x_43)) {
     while (true) {
-      const float x_53 = asfloat(x_5[1].x);
+      float x_53 = asfloat(x_5[1].x);
       x_GLF_color = float4(x_53, x_53, x_53, x_53);
       {
         if (false) { break; }
@@ -32,30 +32,30 @@
         } else {
           break;
         }
-        const int x_13 = asint(x_10[1].x);
+        int x_13 = asint(x_10[1].x);
         i = x_13;
         while (true) {
-          const int x_14 = i;
-          const int x_15 = asint(x_10[0].x);
+          int x_14 = i;
+          int x_15 = asint(x_10[0].x);
           if ((x_14 < x_15)) {
           } else {
             break;
           }
-          const float x_73 = asfloat(x_5[1].x);
-          const float x_75 = asfloat(x_5[0].x);
-          const float x_77 = asfloat(x_5[0].x);
-          const float x_79 = asfloat(x_5[1].x);
+          float x_73 = asfloat(x_5[1].x);
+          float x_75 = asfloat(x_5[0].x);
+          float x_77 = asfloat(x_5[0].x);
+          float x_79 = asfloat(x_5[1].x);
           x_GLF_color = float4(x_73, x_75, x_77, x_79);
           {
-            const int x_16 = i;
+            int x_16 = i;
             i = (x_16 + 1);
           }
         }
         break;
       }
       {
-        const float x_82 = asfloat(x_7[0].x);
-        const float x_84 = asfloat(x_5[0].x);
+        float x_82 = asfloat(x_7[0].x);
+        float x_84 = asfloat(x_5[0].x);
         if (!((x_82 > x_84))) { break; }
       }
     }
@@ -72,13 +72,16 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000020D200749C0(19,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.fxc.hlsl
index 078e245..aa2464b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -94,5 +94,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001B2EF347F10(28,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x00000239B1E474A0(28,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.fxc.hlsl
index 5c7dbc7..a611e86 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -97,7 +97,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001ABE73F2F70(19,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
-C:\src\dawn\Shader@0x000001ABE73F2F70(44,7-15): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x000001ABE73F2F70(33,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000278C6BACCE0(19,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
+C:\src\dawn\Shader@0x00000278C6BACCE0(44,7-15): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000278C6BACCE0(33,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.fxc.hlsl
index bc531f5..6506da0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-matrix-copy-inside-loop/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -125,7 +125,7 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002003EB20510(19,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
-C:\src\dawn\Shader@0x000002003EB20510(48,7-34): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x000002003EB20510(35,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001C455097000(19,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
+C:\src\dawn\Shader@0x000001C455097000(48,7-34): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001C455097000(35,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.fxc.hlsl
index 5717ede..ac27a60 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -108,5 +108,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F536260480(55,17-25): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x000001F51EF5CFE0(55,17-25): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.fxc.hlsl
index 9758f57..85d2f26 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-x86-isel-lowering-negative-left-shift/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -131,5 +131,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022CF32B5050(64,17-25): error X3708: continue cannot be used in a switch
+C:\src\dawn\Shader@0x0000021F427EC580(64,17-25): error X3708: continue cannot be used in a switch
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl
index d1ee477..b0469ea 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -1,9 +1,112 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\core\ir\transform\demote_to_helper.cc:208 internal compiler error: TINT_UNREACHABLE unexpected non-core instruction
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+struct main_out {
+  float4 x_GLF_color_1;
+};
+
+struct main_outputs {
+  float4 main_out_x_GLF_color_1 : SV_Target0;
+};
+
+struct main_inputs {
+  float4 gl_FragCoord_param : SV_Position;
+};
+
+
+cbuffer cbuffer_x_9 : register(b0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = (0.0f).xxxx;
+static float4 gl_FragCoord = (0.0f).xxxx;
+static bool continue_execution = true;
+int tint_f32_to_i32(float value) {
+  return (((value <= 2147483520.0f)) ? ((((value >= -2147483648.0f)) ? (int(value)) : (-2147483648))) : (2147483647));
+}
+
+void main_1() {
+  float2 v = (0.0f).xx;
+  float floats[9] = (float[9])0;
+  int one = 0;
+  int i = 0;
+  bool alwaysFalse = false;
+  v = (0.0f).xx;
+  floats[1] = 0.0f;
+  one = tint_f32_to_i32(asfloat(x_9[0u].y));
+  {
+    while(true) {
+      i = 0;
+      {
+        while(true) {
+          if ((i < one)) {
+          } else {
+            break;
+          }
+          if ((i == 0)) {
+            float v_1 = asfloat(x_9[0u].x);
+            alwaysFalse = (v_1 > asfloat(x_9[0u].y));
+            if (!(alwaysFalse)) {
+              int x_73 = one;
+              floats[x_73] = 1.0f;
+              x_GLF_color = float4(1.0f, 1.0f, 0.0f, 1.0f);
+            }
+            int x_75 = one;
+            v[x_75] = 1.0f;
+            if (alwaysFalse) {
+              continue_execution = false;
+            }
+            if ((asfloat(x_9[0u].y) < 0.0f)) {
+              x_GLF_color = float4(0.0f, 1.0f, 0.0f, 1.0f);
+            }
+          }
+          {
+            i = (i + 1);
+          }
+          continue;
+        }
+      }
+      {
+        int x_87 = one;
+        if (!((x_87 < 0))) { break; }
+      }
+      continue;
+    }
+  }
+  bool x_102 = false;
+  bool x_103 = false;
+  if ((gl_FragCoord.y >= 0.0f)) {
+    bool x_97 = (v.y == 1.0f);
+    x_103 = x_97;
+    if (x_97) {
+      x_102 = (floats[1] == 1.0f);
+      x_103 = x_102;
+    }
+    if (x_103) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    x_GLF_color = (0.0f).xxxx;
+  }
+}
+
+main_out main_inner(float4 gl_FragCoord_param) {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  main_out v_2 = {x_GLF_color};
+  return v_2;
+}
+
+main_outputs main(main_inputs inputs) {
+  main_out v_3 = main_inner(float4(inputs.gl_FragCoord_param.xyz, (1.0f / inputs.gl_FragCoord_param[3u])));
+  main_outputs v_4 = {v_3.x_GLF_color_1};
+  if (!(continue_execution)) {
+    discard;
+  }
+  main_outputs v_5 = v_4;
+  return v_5;
+}
+
+FXC validation failure:
+C:\src\dawn\Shader@0x0000025F8E676850(51,13-19): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000025F8E676850(37,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000025F8E676850(34,5-15): error X3511: forced to unroll loop, but unrolling failed.
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl
index d1ee477..663d04a 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/create-color-in-do-while-for-loop/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -1,9 +1,125 @@
 SKIP: FAILED
 
-..\..\src\tint\lang\core\ir\transform\demote_to_helper.cc:208 internal compiler error: TINT_UNREACHABLE unexpected non-core instruction
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+struct main_out {
+  float4 x_GLF_color_1;
+};
+
+struct main_outputs {
+  float4 main_out_x_GLF_color_1 : SV_Target0;
+};
+
+struct main_inputs {
+  float4 gl_FragCoord_param : SV_Position;
+};
+
+
+cbuffer cbuffer_x_9 : register(b0) {
+  uint4 x_9[1];
+};
+static float4 x_GLF_color = (0.0f).xxxx;
+static float4 gl_FragCoord = (0.0f).xxxx;
+static bool continue_execution = true;
+int tint_f32_to_i32(float value) {
+  return (((value <= 2147483520.0f)) ? ((((value >= -2147483648.0f)) ? (int(value)) : (-2147483648))) : (2147483647));
+}
+
+void main_1() {
+  float2 v = (0.0f).xx;
+  float floats[9] = (float[9])0;
+  int one = 0;
+  int i = 0;
+  bool alwaysFalse = false;
+  v = (0.0f).xx;
+  floats[1] = 0.0f;
+  float x_46 = asfloat(x_9[0u].y);
+  one = tint_f32_to_i32(x_46);
+  {
+    while(true) {
+      i = 0;
+      {
+        while(true) {
+          int x_56 = i;
+          int x_57 = one;
+          if ((x_56 < x_57)) {
+          } else {
+            break;
+          }
+          int x_60 = i;
+          if ((x_60 == 0)) {
+            float x_65 = asfloat(x_9[0u].x);
+            float x_67 = asfloat(x_9[0u].y);
+            alwaysFalse = (x_65 > x_67);
+            bool x_69 = alwaysFalse;
+            if (!(x_69)) {
+              int x_73 = one;
+              floats[x_73] = 1.0f;
+              x_GLF_color = float4(1.0f, 1.0f, 0.0f, 1.0f);
+            }
+            int x_75 = one;
+            v[x_75] = 1.0f;
+            bool x_77 = alwaysFalse;
+            if (x_77) {
+              continue_execution = false;
+            }
+            float x_81 = asfloat(x_9[0u].y);
+            if ((x_81 < 0.0f)) {
+              x_GLF_color = float4(0.0f, 1.0f, 0.0f, 1.0f);
+            }
+          }
+          {
+            int x_85 = i;
+            i = (x_85 + 1);
+          }
+          continue;
+        }
+      }
+      {
+        int x_87 = one;
+        if (!((x_87 < 0))) { break; }
+      }
+      continue;
+    }
+  }
+  bool x_102 = false;
+  bool x_103_phi = false;
+  float x_90 = gl_FragCoord.y;
+  if ((x_90 >= 0.0f)) {
+    float x_96 = v.y;
+    bool x_97 = (x_96 == 1.0f);
+    x_103_phi = x_97;
+    if (x_97) {
+      float x_101 = floats[1];
+      x_102 = (x_101 == 1.0f);
+      x_103_phi = x_102;
+    }
+    bool x_103 = x_103_phi;
+    if (x_103) {
+      x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
+    }
+  } else {
+    x_GLF_color = (0.0f).xxxx;
+  }
+}
+
+main_out main_inner(float4 gl_FragCoord_param) {
+  gl_FragCoord = gl_FragCoord_param;
+  main_1();
+  main_out v_1 = {x_GLF_color};
+  return v_1;
+}
+
+main_outputs main(main_inputs inputs) {
+  main_out v_2 = main_inner(float4(inputs.gl_FragCoord_param.xyz, (1.0f / inputs.gl_FragCoord_param[3u])));
+  main_outputs v_3 = {v_2.x_GLF_color_1};
+  if (!(continue_execution)) {
+    discard;
+  }
+  main_outputs v_4 = v_3;
+  return v_4;
+}
+
+FXC validation failure:
+C:\src\dawn\Shader@0x00000245B4EF7500(57,13-19): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x00000245B4EF7500(38,9-19): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000245B4EF7500(35,5-15): error X3511: forced to unroll loop, but unrolling failed.
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.dxc.hlsl
index c7e3d33..50f8238 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.dxc.hlsl
@@ -7,9 +7,8 @@
 static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 float fx_() {
-  const float x_50 = gl_FragCoord.y;
-  if ((x_50 >= 0.0f)) {
-    const float x_55 = asfloat(x_7[0].y);
+  if ((gl_FragCoord.y >= 0.0f)) {
+    float x_55 = asfloat(x_7[0].y);
     return x_55;
   }
   while (true) {
@@ -28,21 +27,18 @@
   float k0 = 0.0f;
   x2 = 1.0f;
   B = 1.0f;
-  const float x_34 = fx_();
+  float x_34 = fx_();
   x_GLF_color = float4(x_34, 0.0f, 0.0f, 1.0f);
   while (true) {
-    const float x_40 = x2;
-    if ((x_40 > 2.0f)) {
+    if ((x2 > 2.0f)) {
     } else {
       break;
     }
-    const float x_43 = fx_();
-    const float x_44 = fx_();
+    float x_43 = fx_();
+    float x_44 = fx_();
     k0 = (x_43 - x_44);
-    const float x_46 = k0;
-    B = x_46;
-    const float x_47 = B;
-    x2 = x_47;
+    B = k0;
+    x2 = B;
   }
   return;
 }
@@ -60,22 +56,19 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_3 = {x_GLF_color};
+  main_out tint_symbol_3 = {x_GLF_color};
   return tint_symbol_3;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:65: error: Loop must have break.
+hlsl.hlsl:61: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.fxc.hlsl
index d31fcdb..d5068fa 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.fxc.hlsl
@@ -7,9 +7,8 @@
 static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 float fx_() {
-  const float x_50 = gl_FragCoord.y;
-  if ((x_50 >= 0.0f)) {
-    const float x_55 = asfloat(x_7[0].y);
+  if ((gl_FragCoord.y >= 0.0f)) {
+    float x_55 = asfloat(x_7[0].y);
     return x_55;
   }
   while (true) {
@@ -28,21 +27,18 @@
   float k0 = 0.0f;
   x2 = 1.0f;
   B = 1.0f;
-  const float x_34 = fx_();
+  float x_34 = fx_();
   x_GLF_color = float4(x_34, 0.0f, 0.0f, 1.0f);
   while (true) {
-    const float x_40 = x2;
-    if ((x_40 > 2.0f)) {
+    if ((x2 > 2.0f)) {
     } else {
       break;
     }
-    const float x_43 = fx_();
-    const float x_44 = fx_();
+    float x_43 = fx_();
+    float x_44 = fx_();
     k0 = (x_43 - x_44);
-    const float x_46 = k0;
-    B = x_46;
-    const float x_47 = B;
-    x2 = x_47;
+    B = k0;
+    x2 = B;
   }
   return;
 }
@@ -60,13 +56,16 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_3 = {x_GLF_color};
+  main_out tint_symbol_3 = {x_GLF_color};
   return tint_symbol_3;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000028AD381C760(12,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.fxc.hlsl
index dcc6ed4..4bd6acf 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -78,5 +78,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023BDF9F0240(25,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000017AB77DAA00(25,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.dxc.hlsl
index c7e3d33..13bfec9 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.dxc.hlsl
@@ -7,9 +7,9 @@
 static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 float fx_() {
-  const float x_50 = gl_FragCoord.y;
+  float x_50 = gl_FragCoord.y;
   if ((x_50 >= 0.0f)) {
-    const float x_55 = asfloat(x_7[0].y);
+    float x_55 = asfloat(x_7[0].y);
     return x_55;
   }
   while (true) {
@@ -28,20 +28,20 @@
   float k0 = 0.0f;
   x2 = 1.0f;
   B = 1.0f;
-  const float x_34 = fx_();
+  float x_34 = fx_();
   x_GLF_color = float4(x_34, 0.0f, 0.0f, 1.0f);
   while (true) {
-    const float x_40 = x2;
+    float x_40 = x2;
     if ((x_40 > 2.0f)) {
     } else {
       break;
     }
-    const float x_43 = fx_();
-    const float x_44 = fx_();
+    float x_43 = fx_();
+    float x_44 = fx_();
     k0 = (x_43 - x_44);
-    const float x_46 = k0;
+    float x_46 = k0;
     B = x_46;
-    const float x_47 = B;
+    float x_47 = B;
     x2 = x_47;
   }
   return;
@@ -60,22 +60,19 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_3 = {x_GLF_color};
+  main_out tint_symbol_3 = {x_GLF_color};
   return tint_symbol_3;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:65: error: Loop must have break.
+hlsl.hlsl:65: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.fxc.hlsl
index d31fcdb..b6d494e 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.fxc.hlsl
@@ -7,9 +7,9 @@
 static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 float fx_() {
-  const float x_50 = gl_FragCoord.y;
+  float x_50 = gl_FragCoord.y;
   if ((x_50 >= 0.0f)) {
-    const float x_55 = asfloat(x_7[0].y);
+    float x_55 = asfloat(x_7[0].y);
     return x_55;
   }
   while (true) {
@@ -28,20 +28,20 @@
   float k0 = 0.0f;
   x2 = 1.0f;
   B = 1.0f;
-  const float x_34 = fx_();
+  float x_34 = fx_();
   x_GLF_color = float4(x_34, 0.0f, 0.0f, 1.0f);
   while (true) {
-    const float x_40 = x2;
+    float x_40 = x2;
     if ((x_40 > 2.0f)) {
     } else {
       break;
     }
-    const float x_43 = fx_();
-    const float x_44 = fx_();
+    float x_43 = fx_();
+    float x_44 = fx_();
     k0 = (x_43 - x_44);
-    const float x_46 = k0;
+    float x_46 = k0;
     B = x_46;
-    const float x_47 = B;
+    float x_47 = B;
     x2 = x_47;
   }
   return;
@@ -60,13 +60,16 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_3 = {x_GLF_color};
+  main_out tint_symbol_3 = {x_GLF_color};
   return tint_symbol_3;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000236E7DC9930(13,10-13): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.fxc.hlsl
index a446ab1..9afa46f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/function-with-uniform-return/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -82,5 +82,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000283BC8EE920(26,11-14): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x00000112870A5FF0(26,11-14): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.fxc.hlsl
index fdea27b..98b6ed0 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.spvasm.expected.fxc.hlsl
@@ -1,5 +1,9 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
 cbuffer cbuffer_x_6 : register(b0) {
   uint4 x_6[1];
@@ -21,8 +25,8 @@
     int x_120 = 0;
     int x_116 = 0;
     int x_161 = 0;
-    const float x_40 = asfloat(x_6[0].x);
-    const bool x_41 = (x_40 < -1.0f);
+    float x_40 = asfloat(x_6[0].x);
+    bool x_41 = (x_40 < -1.0f);
     x_45 = false;
     x_48 = 0;
     x_50 = 0;
@@ -35,7 +39,7 @@
       int x_63 = 0;
       int x_51 = 0;
       int x_53 = 0;
-      const float x_55 = gl_FragCoord.y;
+      float x_55 = gl_FragCoord.y;
       x_111 = x_48;
       x_112 = x_45;
       if ((x_52 < ((x_55 > -1.0f) ? 10 : 100))) {
@@ -59,8 +63,7 @@
           bool x_78 = false;
           int x_86 = 0;
           bool x_98 = false;
-          const float x_77 = gl_FragCoord.x;
-          x_78 = (x_77 < -1.0f);
+          x_78 = (gl_FragCoord.x < -1.0f);
           if (!((x_40 < 0.0f))) {
             if (x_78) {
               x_66 = 0;
@@ -108,8 +111,7 @@
               break;
             }
             {
-              const float x_105 = float(x_52);
-              x_GLF_color = float4(x_105, x_105, x_105, x_105);
+              x_GLF_color = float4((float(x_52)).xxxx);
             }
           }
           x_51 = x_66;
@@ -152,9 +154,9 @@
       int x_154 = 0;
       int x_119 = 0;
       int x_121 = 0;
-      const float x_123 = asfloat(x_6[0].y);
+      float x_123 = asfloat(x_6[0].y);
       x_161 = x_115;
-      if ((x_120 < int((x_123 + 1.0f)))) {
+      if ((x_120 < tint_ftoi((x_123 + 1.0f)))) {
       } else {
         break;
       }
@@ -162,8 +164,7 @@
         bool x_135 = false;
         int x_143 = 0;
         bool x_155 = false;
-        const float x_134 = gl_FragCoord.x;
-        x_135 = (x_134 < -1.0f);
+        x_135 = (gl_FragCoord.x < -1.0f);
         if (!((x_40 < 0.0f))) {
           if (x_135) {
             x_119 = 0;
@@ -238,13 +239,21 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_3 = {x_GLF_color};
+  main_out tint_symbol_3 = {x_GLF_color};
   return tint_symbol_3;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000013D63676B20(12,3-14): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000013D63676B20(60,9-20): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000013D63676B20(161,7-18): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000013D63676B20(60,9-20): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000013D63676B20(161,7-18): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000013D63676B20(106,11-22): error X4029: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.fxc.hlsl
index 36f4c59..1e1a37f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/increment-value-in-nested-for-loop/0.wgsl.expected.fxc.hlsl
@@ -1,5 +1,9 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
 cbuffer cbuffer_x_6 : register(b0) {
   uint4 x_6[1];
@@ -24,8 +28,8 @@
     int x_118_phi = 0;
     int x_120_phi = 0;
     int x_161_phi = 0;
-    const float x_40 = asfloat(x_6[0].x);
-    const bool x_41 = (x_40 < -1.0f);
+    float x_40 = asfloat(x_6[0].x);
+    bool x_41 = (x_40 < -1.0f);
     x_45_phi = false;
     x_48_phi = 0;
     x_50_phi = 0;
@@ -44,9 +48,9 @@
       bool x_46_phi = false;
       x_45 = x_45_phi;
       x_48 = x_48_phi;
-      const int x_50 = x_50_phi;
-      const int x_52 = x_52_phi;
-      const float x_55 = gl_FragCoord.y;
+      int x_50 = x_50_phi;
+      int x_52 = x_52_phi;
+      float x_55 = gl_FragCoord.y;
       x_111_phi = x_48;
       x_112_phi = x_45;
       if ((x_52 < ((x_55 > -1.0f) ? 10 : 100))) {
@@ -62,7 +66,7 @@
         int x_66_phi = 0;
         x_62 = x_62_phi;
         x_65 = x_65_phi;
-        const int x_67 = x_67_phi;
+        int x_67 = x_67_phi;
         x_51_phi = x_65;
         x_49_phi = x_62;
         x_46_phi = x_45;
@@ -75,7 +79,7 @@
           int x_86_phi = 0;
           int x_97_phi = 0;
           bool x_98_phi = false;
-          const float x_77 = gl_FragCoord.x;
+          float x_77 = gl_FragCoord.x;
           x_78 = (x_77 < -1.0f);
           if (!((x_40 < 0.0f))) {
             if (x_78) {
@@ -85,7 +89,7 @@
             x_86_phi = 1;
             while (true) {
               int x_87 = 0;
-              const int x_86 = x_86_phi;
+              int x_86 = x_86_phi;
               x_97_phi = x_65;
               x_98_phi = false;
               if ((x_86 < 3)) {
@@ -110,7 +114,7 @@
               }
             }
             x_97 = x_97_phi;
-            const bool x_98 = x_98_phi;
+            bool x_98 = x_98_phi;
             x_66_phi = x_97;
             if (x_98) {
               break;
@@ -120,7 +124,7 @@
           break;
         }
         x_66 = x_66_phi;
-        x_63 = asint((x_62 + x_66));
+        x_63 = (x_62 + x_66);
         if (x_41) {
           while (true) {
             if (x_41) {
@@ -128,7 +132,7 @@
               break;
             }
             {
-              const float x_105 = float(x_52);
+              float x_105 = float(x_52);
               x_GLF_color = float4(x_105, x_105, x_105, x_105);
             }
           }
@@ -144,7 +148,7 @@
           x_67_phi = x_68;
         }
       }
-      const int x_51 = x_51_phi;
+      int x_51 = x_51_phi;
       x_49 = x_49_phi;
       x_46 = x_46_phi;
       x_111_phi = x_49;
@@ -165,8 +169,8 @@
         x_52_phi = x_53;
       }
     }
-    const int x_111 = x_111_phi;
-    const bool x_112 = x_112_phi;
+    int x_111 = x_111_phi;
+    bool x_112 = x_112_phi;
     if (x_112) {
       break;
     }
@@ -178,11 +182,11 @@
       int x_121 = 0;
       int x_119_phi = 0;
       x_115 = x_115_phi;
-      const int x_118 = x_118_phi;
-      const int x_120 = x_120_phi;
-      const float x_123 = asfloat(x_6[0].y);
+      int x_118 = x_118_phi;
+      int x_120 = x_120_phi;
+      float x_123 = asfloat(x_6[0].y);
       x_161_phi = x_115;
-      if ((x_120 < int((x_123 + 1.0f)))) {
+      if ((x_120 < tint_ftoi((x_123 + 1.0f)))) {
       } else {
         break;
       }
@@ -191,7 +195,7 @@
         int x_143_phi = 0;
         int x_154_phi = 0;
         bool x_155_phi = false;
-        const float x_134 = gl_FragCoord.x;
+        float x_134 = gl_FragCoord.x;
         x_135 = (x_134 < -1.0f);
         if (!((x_40 < 0.0f))) {
           if (x_135) {
@@ -201,7 +205,7 @@
           x_143_phi = 1;
           while (true) {
             int x_144 = 0;
-            const int x_143 = x_143_phi;
+            int x_143 = x_143_phi;
             x_154_phi = x_118;
             x_155_phi = false;
             if ((x_143 < 3)) {
@@ -226,7 +230,7 @@
             }
           }
           x_154 = x_154_phi;
-          const bool x_155 = x_155_phi;
+          bool x_155 = x_155_phi;
           x_119_phi = x_154;
           if (x_155) {
             break;
@@ -237,7 +241,7 @@
       }
       int x_119 = 0;
       x_119 = x_119_phi;
-      x_116 = asint((x_115 + x_119));
+      x_116 = (x_115 + x_119);
       if ((!(x_41) ? false : x_41)) {
         x_161_phi = x_116;
         break;
@@ -249,7 +253,7 @@
         x_120_phi = x_121;
       }
     }
-    const int x_161 = x_161_phi;
+    int x_161 = x_161_phi;
     if ((x_161 == 4)) {
       x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
     } else {
@@ -273,13 +277,21 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_3 = {x_GLF_color};
+  main_out tint_symbol_3 = {x_GLF_color};
   return tint_symbol_3;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000023E21838B10(12,3-14): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000023E21838B10(75,9-20): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000023E21838B10(191,7-18): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000023E21838B10(75,9-20): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000023E21838B10(191,7-18): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000023E21838B10(127,11-22): error X4029: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.fxc.hlsl
index 9946cf1..e231380 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.spvasm.expected.ir.fxc.hlsl
@@ -102,9 +102,9 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000170BC63A020(70,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
-C:\src\dawn\Shader@0x00000170BC63A020(70,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
-C:\src\dawn\Shader@0x00000170BC63A020(70,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
-C:\src\dawn\Shader@0x00000170BC63A020(57,11-35): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x00000170BC63A020(48,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000017D197F0100(70,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
+C:\src\dawn\Shader@0x0000017D197F0100(70,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
+C:\src\dawn\Shader@0x0000017D197F0100(70,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
+C:\src\dawn\Shader@0x0000017D197F0100(57,11-35): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000017D197F0100(48,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.fxc.hlsl
index 2f32591..fb19eae 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/loops-ifs-continues-call/0.wgsl.expected.ir.fxc.hlsl
@@ -113,9 +113,9 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000019ADAC81550(79,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
-C:\src\dawn\Shader@0x0000019ADAC81550(79,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
-C:\src\dawn\Shader@0x0000019ADAC81550(79,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
-C:\src\dawn\Shader@0x0000019ADAC81550(64,11-35): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000019ADAC81550(52,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000026C0F03CB40(79,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
+C:\src\dawn\Shader@0x0000026C0F03CB40(79,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
+C:\src\dawn\Shader@0x0000026C0F03CB40(79,9-19): warning X3557: loop doesn't seem to do anything, forcing loop to unroll
+C:\src\dawn\Shader@0x0000026C0F03CB40(64,11-35): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000026C0F03CB40(52,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.fxc.hlsl
index eb2da9f..90f5325 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.spvasm.expected.ir.fxc.hlsl
@@ -84,5 +84,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001A1FC82E740(25,5-15): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (435 iterations) or unrolled loop is too large, use the [unroll(n)] attribute to force an exact higher number
+C:\src\dawn\Shader@0x0000014C0D024760(25,5-15): error X3511: unable to unroll loop, loop does not appear to terminate in a timely manner (435 iterations) or unrolled loop is too large, use the [unroll(n)] attribute to force an exact higher number
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.fxc.hlsl
index 21fb791..9f6c2e1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/nested-for-break-mat-color/0.wgsl.expected.ir.fxc.hlsl
@@ -87,5 +87,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000017BE69B84F0(25,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001EB67826FB0(25,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.fxc.hlsl
index 4e77fb6..ea2d21c 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.spvasm.expected.fxc.hlsl
@@ -1,5 +1,9 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
 cbuffer cbuffer_x_7 : register(b0) {
   uint4 x_7[1];
@@ -8,7 +12,7 @@
 static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 int tint_mod(int lhs, int rhs) {
-  const int rhs_or_one = (((rhs == 0) | ((lhs == -2147483648) & (rhs == -1))) ? 1 : rhs);
+  int rhs_or_one = (((rhs == 0) | ((lhs == -2147483648) & (rhs == -1))) ? 1 : rhs);
   if (any(((uint((lhs | rhs_or_one)) & 2147483648u) != 0u))) {
     return (lhs - ((lhs / rhs_or_one) * rhs_or_one));
   } else {
@@ -26,24 +30,18 @@
   int directions = 0;
   int j = 0;
   int d = 0;
-  const float4 x_59 = gl_FragCoord;
-  const float2 x_62 = asfloat(x_7[0].xy);
-  pos = (float2(x_59.x, x_59.y) / x_62);
-  const float x_65 = pos.x;
-  const float x_69 = pos.y;
-  ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
+  pos = (gl_FragCoord.xy / asfloat(x_7[0].xy));
+  ipos = int2(tint_ftoi((pos.x * 16.0f)), tint_ftoi((pos.y * 16.0f)));
   i = 0;
   while (true) {
-    const int x_77 = i;
-    if ((x_77 < 256)) {
+    if ((i < 256)) {
     } else {
       break;
     }
-    const int x_80 = i;
+    int x_80 = i;
     map[x_80] = 0;
     {
-      const int x_82 = i;
-      i = (x_82 + 1);
+      i = (i + 1);
     }
   }
   p = (0).xx;
@@ -58,64 +56,43 @@
     bool x_145 = false;
     bool x_164 = false;
     bool x_165 = false;
-    const int x_88 = v;
-    v = (x_88 + 1);
+    v = (v + 1);
     directions = 0;
-    const int x_91 = p.x;
-    const bool x_92 = (x_91 > 0);
+    bool x_92 = (p.x > 0);
     x_105 = x_92;
     if (x_92) {
-      const int x_96 = p.x;
-      const int x_99 = p.y;
-      const int x_103 = map[((x_96 - 2) + (x_99 * 16))];
-      x_104 = (x_103 == 0);
+      x_104 = (map[((p.x - 2) + (p.y * 16))] == 0);
       x_105 = x_104;
     }
     if (x_105) {
-      const int x_108 = directions;
-      directions = (x_108 + 1);
+      directions = (directions + 1);
     }
-    const int x_111 = p.y;
-    const bool x_112 = (x_111 > 0);
+    bool x_112 = (p.y > 0);
     x_125 = x_112;
     if (x_112) {
-      const int x_116 = p.x;
-      const int x_118 = p.y;
-      const int x_123 = map[(x_116 + ((x_118 - 2) * 16))];
-      x_124 = (x_123 == 0);
+      x_124 = (map[(p.x + ((p.y - 2) * 16))] == 0);
       x_125 = x_124;
     }
     if (x_125) {
-      const int x_128 = directions;
-      directions = (x_128 + 1);
+      directions = (directions + 1);
     }
-    const int x_131 = p.x;
-    const bool x_132 = (x_131 < 14);
+    bool x_132 = (p.x < 14);
     x_145 = x_132;
     if (x_132) {
-      const int x_136 = p.x;
-      const int x_139 = p.y;
-      const int x_143 = map[((x_136 + 2) + (x_139 * 16))];
-      x_144 = (x_143 == 0);
+      x_144 = (map[((p.x + 2) + (p.y * 16))] == 0);
       x_145 = x_144;
     }
     if (x_145) {
-      const int x_148 = directions;
-      directions = (x_148 + 1);
+      directions = (directions + 1);
     }
-    const int x_151 = p.y;
-    const bool x_152 = (x_151 < 14);
+    bool x_152 = (p.y < 14);
     x_165 = x_152;
     if (x_152) {
-      const int x_156 = p.x;
-      const int x_158 = p.y;
-      const int x_163 = map[(x_156 + ((x_158 + 2) * 16))];
-      x_164 = (x_163 == 0);
+      x_164 = (map[(p.x + ((p.y + 2) * 16))] == 0);
       x_165 = x_164;
     }
     if (x_165) {
-      const int x_168 = directions;
-      directions = (x_168 + 1);
+      directions = (directions + 1);
     }
     bool x_229 = false;
     bool x_230 = false;
@@ -143,90 +120,67 @@
     bool x_412 = false;
     bool x_424 = false;
     bool x_425 = false;
-    const int x_170 = directions;
-    if ((x_170 == 0)) {
+    if ((directions == 0)) {
       canwalk = false;
       i = 0;
       while (true) {
-        const int x_179 = i;
-        if ((x_179 < 8)) {
+        if ((i < 8)) {
         } else {
           break;
         }
         j = 0;
         while (true) {
-          const int x_186 = j;
-          if ((x_186 < 8)) {
+          if ((j < 8)) {
           } else {
             break;
           }
-          const int x_189 = j;
-          const int x_191 = i;
-          const int x_196 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
-          if ((x_196 == 0)) {
-            const int x_200 = j;
-            p.x = (x_200 * 2);
-            const int x_203 = i;
-            p.y = (x_203 * 2);
+          if ((map[((j * 2) + ((i * 2) * 16))] == 0)) {
+            p.x = (j * 2);
+            p.y = (i * 2);
             canwalk = true;
           }
           {
-            const int x_206 = j;
-            j = (x_206 + 1);
+            j = (j + 1);
           }
         }
         {
-          const int x_208 = i;
-          i = (x_208 + 1);
+          i = (i + 1);
         }
       }
-      const int x_211 = p.x;
-      const int x_213 = p.y;
+      int x_211 = p.x;
+      int x_213 = p.y;
       map[(x_211 + (x_213 * 16))] = 1;
     } else {
-      const int x_217 = v;
-      const int x_218 = directions;
-      d = tint_mod(x_217, x_218);
-      const int x_220 = directions;
-      const int x_221 = v;
-      v = (x_221 + x_220);
-      const int x_223 = d;
-      const bool x_224 = (x_223 >= 0);
+      d = tint_mod(v, directions);
+      v = (v + directions);
+      bool x_224 = (d >= 0);
       x_230 = x_224;
       if (x_224) {
-        const int x_228 = p.x;
-        x_229 = (x_228 > 0);
+        x_229 = (p.x > 0);
         x_230 = x_229;
       }
       x_243 = x_230;
       if (x_230) {
-        const int x_234 = p.x;
-        const int x_237 = p.y;
-        const int x_241 = map[((x_234 - 2) + (x_237 * 16))];
-        x_242 = (x_241 == 0);
+        x_242 = (map[((p.x - 2) + (p.y * 16))] == 0);
         x_243 = x_242;
       }
       if (x_243) {
-        const int x_246 = d;
-        d = (x_246 - 1);
-        const int x_249 = p.x;
-        const int x_251 = p.y;
+        d = (d - 1);
+        int x_249 = p.x;
+        int x_251 = p.y;
         map[(x_249 + (x_251 * 16))] = 1;
-        const int x_256 = p.x;
-        const int x_259 = p.y;
+        int x_256 = p.x;
+        int x_259 = p.y;
         map[((x_256 - 1) + (x_259 * 16))] = 1;
-        const int x_264 = p.x;
-        const int x_267 = p.y;
+        int x_264 = p.x;
+        int x_267 = p.y;
         map[((x_264 - 2) + (x_267 * 16))] = 1;
-        const int x_272 = p.x;
-        p.x = (x_272 - 2);
+        p.x = (p.x - 2);
       }
-      const int x_275 = d;
-      const bool x_276 = (x_275 >= 0);
+      bool x_276 = (d >= 0);
       x_282 = x_276;
       if (x_276) {
-        const int x_280 = p.y;
-        x_281 = (x_280 > 0);
+        x_281 = (p.y > 0);
         x_282 = x_281;
       }
       if (x_282) {
@@ -243,17 +197,17 @@
         x_296 = 0;
         x_297 = x_296;
       }
-      const int x_299 = ((x_297 - 2) * 16);
+      int x_299 = ((x_297 - 2) * 16);
       if (x_282) {
         x_303 = map;
         x_305 = x_303;
       } else {
-        const int tint_symbol_3[256] = (int[256])0;
+        int tint_symbol_3[256] = (int[256])0;
         x_304 = tint_symbol_3;
         x_305 = x_304;
       }
       if (x_282) {
-        const int tint_symbol_4[256] = (int[256])0;
+        int tint_symbol_4[256] = (int[256])0;
         map = tint_symbol_4;
       }
       if (x_282) {
@@ -266,98 +220,78 @@
         x_316 = 0;
         x_317 = x_316;
       }
-      const bool x_318 = (x_317 == 0);
-      if ((x_282 ? x_318 : x_282)) {
-        const int x_323 = d;
-        d = (x_323 - 1);
-        const int x_326 = p.x;
-        const int x_328 = p.y;
+      if ((x_282 ? (x_317 == 0) : x_282)) {
+        d = (d - 1);
+        int x_326 = p.x;
+        int x_328 = p.y;
         map[(x_326 + (x_328 * 16))] = 1;
-        const int x_333 = p.x;
-        const int x_335 = p.y;
+        int x_333 = p.x;
+        int x_335 = p.y;
         map[(x_333 + ((x_335 - 1) * 16))] = 1;
-        const int x_341 = p.x;
-        const int x_343 = p.y;
-        const int x_345[256] = map;
-        const int tint_symbol_5[256] = (int[256])0;
+        int x_341 = p.x;
+        int x_343 = p.y;
+        int x_345[256] = map;
+        int tint_symbol_5[256] = (int[256])0;
         map = tint_symbol_5;
         map = x_345;
         map[(x_341 + ((x_343 - 2) * 16))] = 1;
-        const int x_350 = p.y;
-        p.y = (x_350 - 2);
+        p.y = (p.y - 2);
       }
-      const int x_353 = d;
-      const bool x_354 = (x_353 >= 0);
+      bool x_354 = (d >= 0);
       x_360 = x_354;
       if (x_354) {
-        const int x_358 = p.x;
-        x_359 = (x_358 < 14);
+        x_359 = (p.x < 14);
         x_360 = x_359;
       }
       x_373 = x_360;
       if (x_360) {
-        const int x_364 = p.x;
-        const int x_367 = p.y;
-        const int x_371 = map[((x_364 + 2) + (x_367 * 16))];
-        x_372 = (x_371 == 0);
+        x_372 = (map[((p.x + 2) + (p.y * 16))] == 0);
         x_373 = x_372;
       }
       if (x_373) {
-        const int x_376 = d;
-        d = (x_376 - 1);
-        const int x_379 = p.x;
-        const int x_381 = p.y;
+        d = (d - 1);
+        int x_379 = p.x;
+        int x_381 = p.y;
         map[(x_379 + (x_381 * 16))] = 1;
-        const int x_386 = p.x;
-        const int x_389 = p.y;
+        int x_386 = p.x;
+        int x_389 = p.y;
         map[((x_386 + 1) + (x_389 * 16))] = 1;
-        const int x_394 = p.x;
-        const int x_397 = p.y;
+        int x_394 = p.x;
+        int x_397 = p.y;
         map[((x_394 + 2) + (x_397 * 16))] = 1;
-        const int x_402 = p.x;
-        p.x = (x_402 + 2);
+        p.x = (p.x + 2);
       }
-      const int x_405 = d;
-      const bool x_406 = (x_405 >= 0);
+      bool x_406 = (d >= 0);
       x_412 = x_406;
       if (x_406) {
-        const int x_410 = p.y;
-        x_411 = (x_410 < 14);
+        x_411 = (p.y < 14);
         x_412 = x_411;
       }
       x_425 = x_412;
       if (x_412) {
-        const int x_416 = p.x;
-        const int x_418 = p.y;
-        const int x_423 = map[(x_416 + ((x_418 + 2) * 16))];
-        x_424 = (x_423 == 0);
+        x_424 = (map[(p.x + ((p.y + 2) * 16))] == 0);
         x_425 = x_424;
       }
       if (x_425) {
-        const int x_428 = d;
-        d = (x_428 - 1);
-        const int x_431 = p.x;
-        const int x_433 = p.y;
+        d = (d - 1);
+        int x_431 = p.x;
+        int x_433 = p.y;
         map[(x_431 + (x_433 * 16))] = 1;
-        const int x_438 = p.x;
-        const int x_440 = p.y;
+        int x_438 = p.x;
+        int x_440 = p.y;
         map[(x_438 + ((x_440 + 1) * 16))] = 1;
-        const int x_446 = p.x;
-        const int x_448 = p.y;
+        int x_446 = p.x;
+        int x_448 = p.y;
         map[(x_446 + ((x_448 + 2) * 16))] = 1;
-        const int x_454 = p.y;
-        p.y = (x_454 + 2);
+        p.y = (p.y + 2);
       }
     }
-    const int x_458 = ipos.y;
-    const int x_461 = ipos.x;
-    const int x_464 = map[((x_458 * 16) + x_461)];
-    if ((x_464 == 1)) {
+    if ((map[((ipos.y * 16) + ipos.x)] == 1)) {
       x_GLF_color = (1.0f).xxxx;
       return;
     }
     {
-      const bool x_468 = canwalk;
+      bool x_468 = canwalk;
       if (!(x_468)) { break; }
     }
   }
@@ -378,12 +312,12 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_6 = {x_GLF_color};
+  main_out tint_symbol_6 = {x_GLF_color};
   return tint_symbol_6;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.fxc.hlsl
index 1ce2c44..7578a77 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-stable-maze-flatten-copy-composite/1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,9 @@
 SKIP: FAILED
 
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? -2147483648 : int(v)) : 2147483647);
+}
+
 static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
 cbuffer cbuffer_x_7 : register(b0) {
   uint4 x_7[1];
@@ -8,7 +12,7 @@
 static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
 
 int tint_mod(int lhs, int rhs) {
-  const int rhs_or_one = (((rhs == 0) | ((lhs == -2147483648) & (rhs == -1))) ? 1 : rhs);
+  int rhs_or_one = (((rhs == 0) | ((lhs == -2147483648) & (rhs == -1))) ? 1 : rhs);
   if (any(((uint((lhs | rhs_or_one)) & 2147483648u) != 0u))) {
     return (lhs - ((lhs / rhs_or_one) * rhs_or_one));
   } else {
@@ -26,23 +30,23 @@
   int directions = 0;
   int j = 0;
   int d = 0;
-  const float4 x_59 = gl_FragCoord;
-  const float2 x_62 = asfloat(x_7[0].xy);
+  float4 x_59 = gl_FragCoord;
+  float2 x_62 = asfloat(x_7[0].xy);
   pos = (float2(x_59.x, x_59.y) / x_62);
-  const float x_65 = pos.x;
-  const float x_69 = pos.y;
-  ipos = int2(int((x_65 * 16.0f)), int((x_69 * 16.0f)));
+  float x_65 = pos.x;
+  float x_69 = pos.y;
+  ipos = int2(tint_ftoi((x_65 * 16.0f)), tint_ftoi((x_69 * 16.0f)));
   i = 0;
   while (true) {
-    const int x_77 = i;
+    int x_77 = i;
     if ((x_77 < 256)) {
     } else {
       break;
     }
-    const int x_80 = i;
+    int x_80 = i;
     map[x_80] = 0;
     {
-      const int x_82 = i;
+      int x_82 = i;
       i = (x_82 + 1);
     }
   }
@@ -58,67 +62,67 @@
     bool x_125_phi = false;
     bool x_145_phi = false;
     bool x_165_phi = false;
-    const int x_88 = v;
+    int x_88 = v;
     v = (x_88 + 1);
     directions = 0;
-    const int x_91 = p.x;
-    const bool x_92 = (x_91 > 0);
+    int x_91 = p.x;
+    bool x_92 = (x_91 > 0);
     x_105_phi = x_92;
     if (x_92) {
-      const int x_96 = p.x;
-      const int x_99 = p.y;
-      const int x_103 = map[((x_96 - 2) + (x_99 * 16))];
+      int x_96 = p.x;
+      int x_99 = p.y;
+      int x_103 = map[((x_96 - 2) + (x_99 * 16))];
       x_104 = (x_103 == 0);
       x_105_phi = x_104;
     }
-    const bool x_105 = x_105_phi;
+    bool x_105 = x_105_phi;
     if (x_105) {
-      const int x_108 = directions;
+      int x_108 = directions;
       directions = (x_108 + 1);
     }
-    const int x_111 = p.y;
-    const bool x_112 = (x_111 > 0);
+    int x_111 = p.y;
+    bool x_112 = (x_111 > 0);
     x_125_phi = x_112;
     if (x_112) {
-      const int x_116 = p.x;
-      const int x_118 = p.y;
-      const int x_123 = map[(x_116 + ((x_118 - 2) * 16))];
+      int x_116 = p.x;
+      int x_118 = p.y;
+      int x_123 = map[(x_116 + ((x_118 - 2) * 16))];
       x_124 = (x_123 == 0);
       x_125_phi = x_124;
     }
-    const bool x_125 = x_125_phi;
+    bool x_125 = x_125_phi;
     if (x_125) {
-      const int x_128 = directions;
+      int x_128 = directions;
       directions = (x_128 + 1);
     }
-    const int x_131 = p.x;
-    const bool x_132 = (x_131 < 14);
+    int x_131 = p.x;
+    bool x_132 = (x_131 < 14);
     x_145_phi = x_132;
     if (x_132) {
-      const int x_136 = p.x;
-      const int x_139 = p.y;
-      const int x_143 = map[((x_136 + 2) + (x_139 * 16))];
+      int x_136 = p.x;
+      int x_139 = p.y;
+      int x_143 = map[((x_136 + 2) + (x_139 * 16))];
       x_144 = (x_143 == 0);
       x_145_phi = x_144;
     }
-    const bool x_145 = x_145_phi;
+    bool x_145 = x_145_phi;
     if (x_145) {
-      const int x_148 = directions;
+      int x_148 = directions;
       directions = (x_148 + 1);
     }
-    const int x_151 = p.y;
-    const bool x_152 = (x_151 < 14);
+    int x_151 = p.y;
+    bool x_152 = (x_151 < 14);
     x_165_phi = x_152;
     if (x_152) {
-      const int x_156 = p.x;
-      const int x_158 = p.y;
-      const int x_163 = map[(x_156 + ((x_158 + 2) * 16))];
+      int x_156 = p.x;
+      int x_158 = p.y;
+      int x_163 = map[(x_156 + ((x_158 + 2) * 16))];
       x_164 = (x_163 == 0);
       x_165_phi = x_164;
     }
-    const bool x_165 = x_165_phi;
+    bool x_165 = x_165_phi;
     if (x_165) {
-      const int x_168 = directions;
+      int x_168 = directions;
       directions = (x_168 + 1);
     }
     bool x_229 = false;
@@ -147,95 +151,95 @@
     bool x_373_phi = false;
     bool x_412_phi = false;
     bool x_425_phi = false;
-    const int x_170 = directions;
+    int x_170 = directions;
     if ((x_170 == 0)) {
       canwalk = false;
       i = 0;
       while (true) {
-        const int x_179 = i;
+        int x_179 = i;
         if ((x_179 < 8)) {
         } else {
           break;
         }
         j = 0;
         while (true) {
-          const int x_186 = j;
+          int x_186 = j;
           if ((x_186 < 8)) {
           } else {
             break;
           }
-          const int x_189 = j;
-          const int x_191 = i;
-          const int x_196 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
+          int x_189 = j;
+          int x_191 = i;
+          int x_196 = map[((x_189 * 2) + ((x_191 * 2) * 16))];
           if ((x_196 == 0)) {
-            const int x_200 = j;
+            int x_200 = j;
             p.x = (x_200 * 2);
-            const int x_203 = i;
+            int x_203 = i;
             p.y = (x_203 * 2);
             canwalk = true;
           }
           {
-            const int x_206 = j;
+            int x_206 = j;
             j = (x_206 + 1);
           }
         }
         {
-          const int x_208 = i;
+          int x_208 = i;
           i = (x_208 + 1);
         }
       }
-      const int x_211 = p.x;
-      const int x_213 = p.y;
+      int x_211 = p.x;
+      int x_213 = p.y;
       map[(x_211 + (x_213 * 16))] = 1;
     } else {
-      const int x_217 = v;
-      const int x_218 = directions;
+      int x_217 = v;
+      int x_218 = directions;
       d = tint_mod(x_217, x_218);
-      const int x_220 = directions;
-      const int x_221 = v;
+      int x_220 = directions;
+      int x_221 = v;
       v = (x_221 + x_220);
-      const int x_223 = d;
-      const bool x_224 = (x_223 >= 0);
+      int x_223 = d;
+      bool x_224 = (x_223 >= 0);
       x_230_phi = x_224;
       if (x_224) {
-        const int x_228 = p.x;
+        int x_228 = p.x;
         x_229 = (x_228 > 0);
         x_230_phi = x_229;
       }
-      const bool x_230 = x_230_phi;
+      bool x_230 = x_230_phi;
       x_243_phi = x_230;
       if (x_230) {
-        const int x_234 = p.x;
-        const int x_237 = p.y;
-        const int x_241 = map[((x_234 - 2) + (x_237 * 16))];
+        int x_234 = p.x;
+        int x_237 = p.y;
+        int x_241 = map[((x_234 - 2) + (x_237 * 16))];
         x_242 = (x_241 == 0);
         x_243_phi = x_242;
       }
-      const bool x_243 = x_243_phi;
+      bool x_243 = x_243_phi;
       if (x_243) {
-        const int x_246 = d;
+        int x_246 = d;
         d = (x_246 - 1);
-        const int x_249 = p.x;
-        const int x_251 = p.y;
+        int x_249 = p.x;
+        int x_251 = p.y;
         map[(x_249 + (x_251 * 16))] = 1;
-        const int x_256 = p.x;
-        const int x_259 = p.y;
+        int x_256 = p.x;
+        int x_259 = p.y;
         map[((x_256 - 1) + (x_259 * 16))] = 1;
-        const int x_264 = p.x;
-        const int x_267 = p.y;
+        int x_264 = p.x;
+        int x_267 = p.y;
         map[((x_264 - 2) + (x_267 * 16))] = 1;
-        const int x_272 = p.x;
+        int x_272 = p.x;
         p.x = (x_272 - 2);
       }
-      const int x_275 = d;
-      const bool x_276 = (x_275 >= 0);
+      int x_275 = d;
+      bool x_276 = (x_275 >= 0);
       x_282_phi = x_276;
       if (x_276) {
-        const int x_280 = p.y;
+        int x_280 = p.y;
         x_281 = (x_280 > 0);
         x_282_phi = x_281;
       }
-      const bool x_282 = x_282_phi;
+      bool x_282 = x_282_phi;
       if (x_282) {
         x_288 = p.x;
         x_290_phi = x_288;
@@ -243,7 +247,7 @@
         x_289 = 0;
         x_290_phi = x_289;
       }
-      const int x_290 = x_290_phi;
+      int x_290 = x_290_phi;
       if (x_282) {
         x_295 = p.y;
         x_297_phi = x_295;
@@ -251,19 +255,19 @@
         x_296 = 0;
         x_297_phi = x_296;
       }
-      const int x_297 = x_297_phi;
-      const int x_299 = ((x_297 - 2) * 16);
+      int x_297 = x_297_phi;
+      int x_299 = ((x_297 - 2) * 16);
       if (x_282) {
         x_303 = map;
         x_305_phi = x_303;
       } else {
-        const int tint_symbol_3[256] = (int[256])0;
+        int tint_symbol_3[256] = (int[256])0;
         x_304 = tint_symbol_3;
         x_305_phi = x_304;
       }
-      const int x_305[256] = x_305_phi;
+      int x_305[256] = x_305_phi;
       if (x_282) {
-        const int tint_symbol_4[256] = (int[256])0;
+        int tint_symbol_4[256] = (int[256])0;
         map = tint_symbol_4;
       }
       if (x_282) {
@@ -276,103 +280,103 @@
         x_316 = 0;
         x_317_phi = x_316;
       }
-      const int x_317 = x_317_phi;
-      const bool x_318 = (x_317 == 0);
+      int x_317 = x_317_phi;
+      bool x_318 = (x_317 == 0);
       if ((x_282 ? x_318 : x_282)) {
-        const int x_323 = d;
+        int x_323 = d;
         d = (x_323 - 1);
-        const int x_326 = p.x;
-        const int x_328 = p.y;
+        int x_326 = p.x;
+        int x_328 = p.y;
         map[(x_326 + (x_328 * 16))] = 1;
-        const int x_333 = p.x;
-        const int x_335 = p.y;
+        int x_333 = p.x;
+        int x_335 = p.y;
         map[(x_333 + ((x_335 - 1) * 16))] = 1;
-        const int x_341 = p.x;
-        const int x_343 = p.y;
-        const int x_345[256] = map;
-        const int tint_symbol_5[256] = (int[256])0;
+        int x_341 = p.x;
+        int x_343 = p.y;
+        int x_345[256] = map;
+        int tint_symbol_5[256] = (int[256])0;
         map = tint_symbol_5;
         map = x_345;
         map[(x_341 + ((x_343 - 2) * 16))] = 1;
-        const int x_350 = p.y;
+        int x_350 = p.y;
         p.y = (x_350 - 2);
       }
-      const int x_353 = d;
-      const bool x_354 = (x_353 >= 0);
+      int x_353 = d;
+      bool x_354 = (x_353 >= 0);
       x_360_phi = x_354;
       if (x_354) {
-        const int x_358 = p.x;
+        int x_358 = p.x;
         x_359 = (x_358 < 14);
         x_360_phi = x_359;
       }
-      const bool x_360 = x_360_phi;
+      bool x_360 = x_360_phi;
       x_373_phi = x_360;
       if (x_360) {
-        const int x_364 = p.x;
-        const int x_367 = p.y;
-        const int x_371 = map[((x_364 + 2) + (x_367 * 16))];
+        int x_364 = p.x;
+        int x_367 = p.y;
+        int x_371 = map[((x_364 + 2) + (x_367 * 16))];
         x_372 = (x_371 == 0);
         x_373_phi = x_372;
       }
-      const bool x_373 = x_373_phi;
+      bool x_373 = x_373_phi;
       if (x_373) {
-        const int x_376 = d;
+        int x_376 = d;
         d = (x_376 - 1);
-        const int x_379 = p.x;
-        const int x_381 = p.y;
+        int x_379 = p.x;
+        int x_381 = p.y;
         map[(x_379 + (x_381 * 16))] = 1;
-        const int x_386 = p.x;
-        const int x_389 = p.y;
+        int x_386 = p.x;
+        int x_389 = p.y;
         map[((x_386 + 1) + (x_389 * 16))] = 1;
-        const int x_394 = p.x;
-        const int x_397 = p.y;
+        int x_394 = p.x;
+        int x_397 = p.y;
         map[((x_394 + 2) + (x_397 * 16))] = 1;
-        const int x_402 = p.x;
+        int x_402 = p.x;
         p.x = (x_402 + 2);
       }
-      const int x_405 = d;
-      const bool x_406 = (x_405 >= 0);
+      int x_405 = d;
+      bool x_406 = (x_405 >= 0);
       x_412_phi = x_406;
       if (x_406) {
-        const int x_410 = p.y;
+        int x_410 = p.y;
         x_411 = (x_410 < 14);
         x_412_phi = x_411;
       }
-      const bool x_412 = x_412_phi;
+      bool x_412 = x_412_phi;
       x_425_phi = x_412;
       if (x_412) {
-        const int x_416 = p.x;
-        const int x_418 = p.y;
-        const int x_423 = map[(x_416 + ((x_418 + 2) * 16))];
+        int x_416 = p.x;
+        int x_418 = p.y;
+        int x_423 = map[(x_416 + ((x_418 + 2) * 16))];
         x_424 = (x_423 == 0);
         x_425_phi = x_424;
       }
-      const bool x_425 = x_425_phi;
+      bool x_425 = x_425_phi;
       if (x_425) {
-        const int x_428 = d;
+        int x_428 = d;
         d = (x_428 - 1);
-        const int x_431 = p.x;
-        const int x_433 = p.y;
+        int x_431 = p.x;
+        int x_433 = p.y;
         map[(x_431 + (x_433 * 16))] = 1;
-        const int x_438 = p.x;
-        const int x_440 = p.y;
+        int x_438 = p.x;
+        int x_440 = p.y;
         map[(x_438 + ((x_440 + 1) * 16))] = 1;
-        const int x_446 = p.x;
-        const int x_448 = p.y;
+        int x_446 = p.x;
+        int x_448 = p.y;
         map[(x_446 + ((x_448 + 2) * 16))] = 1;
-        const int x_454 = p.y;
+        int x_454 = p.y;
         p.y = (x_454 + 2);
       }
     }
-    const int x_458 = ipos.y;
-    const int x_461 = ipos.x;
-    const int x_464 = map[((x_458 * 16) + x_461)];
+    int x_458 = ipos.y;
+    int x_461 = ipos.x;
+    int x_464 = map[((x_458 * 16) + x_461)];
     if ((x_464 == 1)) {
       x_GLF_color = (1.0f).xxxx;
       return;
     }
     {
-      const bool x_468 = canwalk;
+      bool x_468 = canwalk;
       if (!(x_468)) { break; }
     }
   }
@@ -393,12 +397,12 @@
 main_out main_inner(float4 gl_FragCoord_param) {
   gl_FragCoord = gl_FragCoord_param;
   main_1();
-  const main_out tint_symbol_6 = {x_GLF_color};
+  main_out tint_symbol_6 = {x_GLF_color};
   return tint_symbol_6;
 }
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
-  const main_out inner_result = main_inner(tint_symbol.gl_FragCoord_param);
+  main_out inner_result = main_inner(float4(tint_symbol.gl_FragCoord_param.xyz, (1.0f / tint_symbol.gl_FragCoord_param.w)));
   tint_symbol_2 wrapper_result = (tint_symbol_2)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.fxc.hlsl
index 8e511bd..dfa7263 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.ir.fxc.hlsl
@@ -290,8 +290,8 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001F8B4A7FED0(40,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
-C:\src\dawn\Shader@0x000001F8B4A7FED0(40,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
-C:\src\dawn\Shader@0x000001F8B4A7FED0(89,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x000001F8B4A7FED0(206,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000002D63D7A3170(40,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000002D63D7A3170(40,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000002D63D7A3170(89,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000002D63D7A3170(206,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.fxc.hlsl
index f6eb007..6446742 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.ir.fxc.hlsl
@@ -358,8 +358,8 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000194F9765900(41,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
-C:\src\dawn\Shader@0x00000194F9765900(41,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
-C:\src\dawn\Shader@0x00000194F9765900(112,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x00000194F9765900(259,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000002752CEE4040(41,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000002752CEE4040(41,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000002752CEE4040(112,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000002752CEE4040(259,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.fxc.hlsl
index d996d23..030081e 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.spvasm.expected.ir.fxc.hlsl
@@ -120,6 +120,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002D580060330(21,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
-C:\src\dawn\Shader@0x000002D580060330(85,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000028C6C846F20(21,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
+C:\src\dawn\Shader@0x0000028C6C846F20(85,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.fxc.hlsl
index 17c3f83..c9a9185 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-colorgrid-modulo-vec3-values-from-matrix/1.wgsl.expected.ir.fxc.hlsl
@@ -144,6 +144,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001C7A4990760(21,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
-C:\src\dawn\Shader@0x000001C7A4990760(99,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000002DDEBF00B50(21,19-25): warning X3556: integer divides may be much slower, try using uints if possible.
+C:\src\dawn\Shader@0x000002DDEBF00B50(99,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.fxc.hlsl
index 9e6f3df..7a35ecb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.spvasm.expected.ir.fxc.hlsl
@@ -224,8 +224,8 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000025161B977A0(71,11-85): warning X3556: integer divides may be much slower, try using uints if possible.
-C:\src\dawn\Shader@0x0000025161B977A0(28,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000025161B977A0(45,5-15): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x0000025161B977A0(110,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000021595CD5C90(71,11-85): warning X3556: integer divides may be much slower, try using uints if possible.
+C:\src\dawn\Shader@0x0000021595CD5C90(28,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x0000021595CD5C90(45,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000021595CD5C90(110,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.fxc.hlsl
index 69f5862..d239906 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-conditional-bitwise-or-clamp/1.wgsl.expected.ir.fxc.hlsl
@@ -299,8 +299,8 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024339F611B0(92,11-85): warning X3556: integer divides may be much slower, try using uints if possible.
-C:\src\dawn\Shader@0x0000024339F611B0(32,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
-C:\src\dawn\Shader@0x0000024339F611B0(54,5-15): error X3511: forced to unroll loop, but unrolling failed.
-C:\src\dawn\Shader@0x0000024339F611B0(141,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001FC78D314A0(92,11-85): warning X3556: integer divides may be much slower, try using uints if possible.
+C:\src\dawn\Shader@0x000001FC78D314A0(32,3-20): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\dawn\Shader@0x000001FC78D314A0(54,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x000001FC78D314A0(141,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.fxc.hlsl
index b826c2e..a3a1bf1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.fxc.hlsl
@@ -216,5 +216,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000021E90678E60(139,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x00000208A86E5070(139,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.fxc.hlsl
index b4b6565..e57a0bc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.fxc.hlsl
@@ -287,5 +287,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001743E471030(181,5-15): error X3511: forced to unroll loop, but unrolling failed.
+C:\src\dawn\Shader@0x0000029E3B765CD0(181,5-15): error X3511: forced to unroll loop, but unrolling failed.
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.fxc.hlsl
index 271e1d3..cec301d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.spvasm.expected.ir.fxc.hlsl
@@ -70,6 +70,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000023E2E187420(28,7-20): error X3504: literal loop terminated early due to out of bounds array access
-C:\src\dawn\Shader@0x0000023E2E187420(22,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000001A396E9AAB0(28,7-20): error X3504: literal loop terminated early due to out of bounds array access
+C:\src\dawn\Shader@0x000001A396E9AAB0(22,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.fxc.hlsl
index 62ff1cf..f6078d8 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/two-loops-matrix/0.wgsl.expected.ir.fxc.hlsl
@@ -79,6 +79,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000022BEE81FBC0(29,7-20): error X3504: literal loop terminated early due to out of bounds array access
-C:\src\dawn\Shader@0x0000022BEE81FBC0(22,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000002CF8103B000(29,7-20): error X3504: literal loop terminated early due to out of bounds array access
+C:\src\dawn\Shader@0x000002CF8103B000(22,5-15): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.dxc.hlsl
index 24950cc..d9f48f2 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.dxc.hlsl
@@ -11,18 +11,14 @@
   int donor_replacementGLF_dead6tree[1] = (int[1])0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   GLF_dead6index = 0;
-  const float x_34 = asfloat(x_6[0].y);
-  if ((x_34 < 0.0f)) {
+  if ((asfloat(x_6[0].y) < 0.0f)) {
     while (true) {
       if (true) {
       } else {
         break;
       }
-      const int x_9 = GLF_dead6index;
-      const int x_10 = donor_replacementGLF_dead6tree[x_9];
-      GLF_dead6currentNode = x_10;
-      const int x_11 = GLF_dead6currentNode;
-      GLF_dead6index = x_11;
+      GLF_dead6currentNode = donor_replacementGLF_dead6tree[GLF_dead6index];
+      GLF_dead6index = GLF_dead6currentNode;
     }
   }
   return;
@@ -37,22 +33,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:42: error: Loop must have break.
+hlsl.hlsl:38: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.fxc.hlsl
index ae60c5a..54c1ddd 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.fxc.hlsl
@@ -11,18 +11,14 @@
   int donor_replacementGLF_dead6tree[1] = (int[1])0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   GLF_dead6index = 0;
-  const float x_34 = asfloat(x_6[0].y);
-  if ((x_34 < 0.0f)) {
+  if ((asfloat(x_6[0].y) < 0.0f)) {
     while (true) {
       if (true) {
       } else {
         break;
       }
-      const int x_9 = GLF_dead6index;
-      const int x_10 = donor_replacementGLF_dead6tree[x_9];
-      GLF_dead6currentNode = x_10;
-      const int x_11 = GLF_dead6currentNode;
-      GLF_dead6index = x_11;
+      GLF_dead6currentNode = donor_replacementGLF_dead6tree[GLF_dead6index];
+      GLF_dead6index = GLF_dead6currentNode;
     }
   }
   return;
@@ -37,13 +33,16 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000016E9399DC80(13,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.fxc.hlsl
index 62e21c2..8ebb8cb 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.spvasm.expected.ir.fxc.hlsl
@@ -49,5 +49,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000001BBAF8BE0F0(22,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000021EE42C6790(22,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.dxc.hlsl
index 24950cc..262dee5 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.dxc.hlsl
@@ -11,17 +11,17 @@
   int donor_replacementGLF_dead6tree[1] = (int[1])0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   GLF_dead6index = 0;
-  const float x_34 = asfloat(x_6[0].y);
+  float x_34 = asfloat(x_6[0].y);
   if ((x_34 < 0.0f)) {
     while (true) {
       if (true) {
       } else {
         break;
       }
-      const int x_9 = GLF_dead6index;
-      const int x_10 = donor_replacementGLF_dead6tree[x_9];
+      int x_9 = GLF_dead6index;
+      int x_10 = donor_replacementGLF_dead6tree[x_9];
       GLF_dead6currentNode = x_10;
-      const int x_11 = GLF_dead6currentNode;
+      int x_11 = GLF_dead6currentNode;
       GLF_dead6index = x_11;
     }
   }
@@ -37,22 +37,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:42: error: Loop must have break.
+hlsl.hlsl:42: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.fxc.hlsl
index ae60c5a..b141fa7 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.fxc.hlsl
@@ -11,17 +11,17 @@
   int donor_replacementGLF_dead6tree[1] = (int[1])0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   GLF_dead6index = 0;
-  const float x_34 = asfloat(x_6[0].y);
+  float x_34 = asfloat(x_6[0].y);
   if ((x_34 < 0.0f)) {
     while (true) {
       if (true) {
       } else {
         break;
       }
-      const int x_9 = GLF_dead6index;
-      const int x_10 = donor_replacementGLF_dead6tree[x_9];
+      int x_9 = GLF_dead6index;
+      int x_10 = donor_replacementGLF_dead6tree[x_9];
       GLF_dead6currentNode = x_10;
-      const int x_11 = GLF_dead6currentNode;
+      int x_11 = GLF_dead6currentNode;
       GLF_dead6index = x_11;
     }
   }
@@ -37,13 +37,16 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x00000268FA018F90(14,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.fxc.hlsl
index ea9160e..47d243d 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/undefined-assign-in-infinite-loop/0.wgsl.expected.ir.fxc.hlsl
@@ -53,5 +53,5 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x00000118D557E970(23,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x00000125511F4CF0(23,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.dxc.hlsl
index fe9e031..c683a89 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.dxc.hlsl
@@ -8,9 +8,7 @@
 void main_1() {
   int m = 0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
-  const float x_30 = asfloat(x_5[0].x);
-  const float x_32 = asfloat(x_5[0].y);
-  if ((x_30 > x_32)) {
+  if ((asfloat(x_5[0].x) > asfloat(x_5[0].y))) {
     while (true) {
       {
         if (true) { break; }
@@ -37,22 +35,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:42: error: Loop must have break.
+hlsl.hlsl:40: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.fxc.hlsl
index 59f1a13..a991b5c 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.fxc.hlsl
@@ -8,9 +8,7 @@
 void main_1() {
   int m = 0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
-  const float x_30 = asfloat(x_5[0].x);
-  const float x_32 = asfloat(x_5[0].y);
-  if ((x_30 > x_32)) {
+  if ((asfloat(x_5[0].x) > asfloat(x_5[0].y))) {
     while (true) {
       {
         if (true) { break; }
@@ -37,13 +35,17 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x000001A9F8B396C0(10,5-16): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x000001A9F8B396C0(16,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.fxc.hlsl
index 41a1daf..0a95a08 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.spvasm.expected.ir.fxc.hlsl
@@ -55,6 +55,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x0000024EDB2E6450(20,7-17): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
-C:\src\dawn\Shader@0x0000024EDB2E6450(29,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x00000210D0627B30(20,7-17): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x00000210D0627B30(29,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.dxc.hlsl
index fe9e031..1ad2d20 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.dxc.hlsl
@@ -8,8 +8,8 @@
 void main_1() {
   int m = 0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
-  const float x_30 = asfloat(x_5[0].x);
-  const float x_32 = asfloat(x_5[0].y);
+  float x_30 = asfloat(x_5[0].x);
+  float x_32 = asfloat(x_5[0].y);
   if ((x_30 > x_32)) {
     while (true) {
       {
@@ -37,22 +37,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:42: error: Loop must have break.
+hlsl.hlsl:42: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.fxc.hlsl
index 59f1a13..1e2d2d3 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.fxc.hlsl
@@ -8,8 +8,8 @@
 void main_1() {
   int m = 0;
   x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
-  const float x_30 = asfloat(x_5[0].x);
-  const float x_32 = asfloat(x_5[0].y);
+  float x_30 = asfloat(x_5[0].x);
+  float x_32 = asfloat(x_5[0].y);
   if ((x_30 > x_32)) {
     while (true) {
       {
@@ -37,13 +37,17 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+FXC validation failure:
+C:\src\dawn\Shader@0x0000027BF045FA70(12,5-16): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000027BF045FA70(18,12-15): error X3696: infinite loop detected - loop never exits
+
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.fxc.hlsl
index d3c61a0..5f1b6dc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/unreachable-loops/0-opt.wgsl.expected.ir.fxc.hlsl
@@ -56,6 +56,6 @@
 }
 
 FXC validation failure:
-C:\src\dawn\Shader@0x000002C69079DD20(21,7-17): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
-C:\src\dawn\Shader@0x000002C69079DD20(30,13-16): error X3696: infinite loop detected - loop never exits
+C:\src\dawn\Shader@0x0000028D7737CE90(21,7-17): warning X3557: loop only executes for 0 iteration(s), forcing loop to unroll
+C:\src\dawn\Shader@0x0000028D7737CE90(30,13-16): error X3696: infinite loop detected - loop never exits
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.dxc.hlsl
index f6b4fdc..9936239 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-void set_scalar_float4x3(inout float4x3 mat, int col, int row, float val) {
+void set_matrix_scalar(inout float4x3 mat, int col, int row, float val) {
   switch (col) {
     case 0:
       mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
@@ -40,69 +40,50 @@
   ll_1 = 0;
   GLF_live6rows = 2;
   while (true) {
-    const int x_18 = ll_1;
-    const int x_19 = asint(x_9[0].x);
-    if ((x_18 >= x_19)) {
+    if ((ll_1 >= asint(x_9[0].x))) {
       x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
       break;
     }
-    const int x_20 = ll_1;
-    ll_1 = (x_20 + 1);
-    const int x_22 = asint(x_9[0].x);
-    z = x_22;
+    ll_1 = (ll_1 + 1);
+    z = asint(x_9[0].x);
     ll_2 = 0;
     ctr = 0;
     while (true) {
-      const int x_23 = ctr;
-      if ((x_23 < 1)) {
+      if ((ctr < 1)) {
       } else {
         break;
       }
-      const int x_24 = ll_2;
-      const int x_25 = asint(x_9[0].x);
-      if ((x_24 >= x_25)) {
+      if ((ll_2 >= asint(x_9[0].x))) {
         break;
       }
-      const int x_26 = ll_2;
-      ll_2 = (x_26 + 1);
-      const float4x3 x_98 = m43;
-      tempm43 = x_98;
+      ll_2 = (ll_2 + 1);
+      tempm43 = m43;
       ll_3 = 0;
       c = 0;
       while (true) {
-        const int x_28 = z;
-        if ((1 < x_28)) {
+        if ((1 < z)) {
         } else {
           break;
         }
         d = 0;
-        const int x_29 = c;
-        const int x_30 = c;
-        const int x_31 = c;
-        const int x_32 = d;
-        const int x_33 = d;
-        const int x_34 = d;
-        set_scalar_float4x3(tempm43, (((x_29 >= 0) & (x_30 < 4)) ? x_31 : 0), (((x_32 >= 0) & (x_33 < 3)) ? x_34 : 0), 1.0f);
+        int x_29 = c;
+        int x_30 = c;
+        int x_31 = c;
+        int x_32 = d;
+        int x_33 = d;
+        int x_34 = d;
+        set_matrix_scalar(tempm43, (((x_29 >= 0) & (x_30 < 4)) ? x_31 : 0), (((x_32 >= 0) & (x_33 < 3)) ? x_34 : 0), 1.0f);
         {
-          const int x_35 = c;
-          c = (x_35 + 1);
+          c = (c + 1);
         }
       }
-      const int x_37 = idx;
-      const int x_38 = idx;
-      const int x_39 = idx;
-      const int x_117 = (((x_37 >= 0) & (x_38 < 9)) ? x_39 : 0);
-      const int x_40 = ctr;
-      const float x_119 = m43[x_40].y;
-      const float x_121 = GLF_live6sums[x_117];
-      GLF_live6sums[x_117] = (x_121 + x_119);
+      int x_117 = (((idx >= 0) & (idx < 9)) ? idx : 0);
+      GLF_live6sums[x_117] = (GLF_live6sums[x_117] + m43[ctr].y);
       {
-        const int x_41 = ctr;
-        ctr = (x_41 + 1);
+        ctr = (ctr + 1);
       }
     }
-    const int x_43 = idx;
-    idx = (x_43 + 1);
+    idx = (idx + 1);
   }
   return;
 }
@@ -116,22 +97,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:121: error: Loop must have break.
+hlsl.hlsl:102: error: Loop must have break.
 Validation failed.
 
 
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.dxc.hlsl
index f6b4fdc..1983edc 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 SKIP: FAILED
 
-void set_scalar_float4x3(inout float4x3 mat, int col, int row, float val) {
+void set_matrix_scalar(inout float4x3 mat, int col, int row, float val) {
   switch (col) {
     case 0:
       mat[0] = (row.xxx == int3(0, 1, 2)) ? val.xxx : mat[0];
@@ -40,68 +40,68 @@
   ll_1 = 0;
   GLF_live6rows = 2;
   while (true) {
-    const int x_18 = ll_1;
-    const int x_19 = asint(x_9[0].x);
+    int x_18 = ll_1;
+    int x_19 = asint(x_9[0].x);
     if ((x_18 >= x_19)) {
       x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
       break;
     }
-    const int x_20 = ll_1;
+    int x_20 = ll_1;
     ll_1 = (x_20 + 1);
-    const int x_22 = asint(x_9[0].x);
+    int x_22 = asint(x_9[0].x);
     z = x_22;
     ll_2 = 0;
     ctr = 0;
     while (true) {
-      const int x_23 = ctr;
+      int x_23 = ctr;
       if ((x_23 < 1)) {
       } else {
         break;
       }
-      const int x_24 = ll_2;
-      const int x_25 = asint(x_9[0].x);
+      int x_24 = ll_2;
+      int x_25 = asint(x_9[0].x);
       if ((x_24 >= x_25)) {
         break;
       }
-      const int x_26 = ll_2;
+      int x_26 = ll_2;
       ll_2 = (x_26 + 1);
-      const float4x3 x_98 = m43;
+      float4x3 x_98 = m43;
       tempm43 = x_98;
       ll_3 = 0;
       c = 0;
       while (true) {
-        const int x_28 = z;
+        int x_28 = z;
         if ((1 < x_28)) {
         } else {
           break;
         }
         d = 0;
-        const int x_29 = c;
-        const int x_30 = c;
-        const int x_31 = c;
-        const int x_32 = d;
-        const int x_33 = d;
-        const int x_34 = d;
-        set_scalar_float4x3(tempm43, (((x_29 >= 0) & (x_30 < 4)) ? x_31 : 0), (((x_32 >= 0) & (x_33 < 3)) ? x_34 : 0), 1.0f);
+        int x_29 = c;
+        int x_30 = c;
+        int x_31 = c;
+        int x_32 = d;
+        int x_33 = d;
+        int x_34 = d;
+        set_matrix_scalar(tempm43, (((x_29 >= 0) & (x_30 < 4)) ? x_31 : 0), (((x_32 >= 0) & (x_33 < 3)) ? x_34 : 0), 1.0f);
         {
-          const int x_35 = c;
+          int x_35 = c;
           c = (x_35 + 1);
         }
       }
-      const int x_37 = idx;
-      const int x_38 = idx;
-      const int x_39 = idx;
-      const int x_117 = (((x_37 >= 0) & (x_38 < 9)) ? x_39 : 0);
-      const int x_40 = ctr;
-      const float x_119 = m43[x_40].y;
-      const float x_121 = GLF_live6sums[x_117];
+      int x_37 = idx;
+      int x_38 = idx;
+      int x_39 = idx;
+      int x_117 = (((x_37 >= 0) & (x_38 < 9)) ? x_39 : 0);
+      int x_40 = ctr;
+      float x_119 = m43[x_40].y;
+      float x_121 = GLF_live6sums[x_117];
       GLF_live6sums[x_117] = (x_121 + x_119);
       {
-        const int x_41 = ctr;
+        int x_41 = ctr;
         ctr = (x_41 + 1);
       }
     }
-    const int x_43 = idx;
+    int x_43 = idx;
     idx = (x_43 + 1);
   }
   return;
@@ -116,22 +116,19 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_1 = {x_GLF_color};
+  main_out tint_symbol_1 = {x_GLF_color};
   return tint_symbol_1;
 }
 
 tint_symbol main() {
-  const main_out inner_result = main_inner();
+  main_out inner_result = main_inner();
   tint_symbol wrapper_result = (tint_symbol)0;
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
 DXC validation failure:
-warning: DXIL signing library (dxil.dll,libdxil.so) not found.  Resulting DXIL will not be signed for use in release environments.
-
 error: validation errors
-shader.hlsl:121: error: Loop must have break.
+hlsl.hlsl:121: error: Loop must have break.
 Validation failed.
 
 
-