tint/val: Make DXC validation output stable

Replace the temporary file name with 'shader.hlsl', so that
skip-expectations can be stably re-generated.

Change-Id: I5ead2235e6e0d84ad67c8d90f8d06b812c8fd593
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/97145
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/val/hlsl.cc b/src/tint/val/hlsl.cc
index f984b1a..18bded6 100644
--- a/src/tint/val/hlsl.cc
+++ b/src/tint/val/hlsl.cc
@@ -16,6 +16,7 @@
 
 #include "src/tint/utils/io/command.h"
 #include "src/tint/utils/io/tmpfile.h"
+#include "src/tint/utils/string.h"
 
 #ifdef _WIN32
 #include <Windows.h>
@@ -83,6 +84,9 @@
             result.output += res.err;
         }
         result.failed = (res.error_code != 0);
+
+        // Remove the temporary file name from the output to keep output deterministic
+        result.output = utils::ReplaceAll(result.output, file.Path(), "shader.hlsl");
     }
 
     if (entry_points.empty()) {
diff --git a/test/tint/benchmark/particles.wgsl.expected.glsl b/test/tint/benchmark/particles.wgsl.expected.glsl
index 0aba76a..88e5156 100644
--- a/test/tint/benchmark/particles.wgsl.expected.glsl
+++ b/test/tint/benchmark/particles.wgsl.expected.glsl
@@ -181,7 +181,7 @@
   particle.lifetime = (particle.lifetime - sim_params.deltaTime);
   particle.color.a = smoothstep(0.0f, 0.5f, particle.lifetime);
   if ((particle.lifetime < 0.0f)) {
-    ivec2 coord = ivec2(0, 0);
+    ivec2 coord = ivec2(0);
     {
       for(int level = (textureQueryLevels(tint_symbol_6) - 1); (level > 0); level = (level - 1)) {
         vec4 probabilites = texelFetch(tint_symbol_6, coord, level);
diff --git a/test/tint/bug/tint/804.spv.expected.dxc.hlsl b/test/tint/bug/tint/804.spv.expected.dxc.hlsl
index 146a132..be038c9 100644
--- a/test/tint/bug/tint/804.spv.expected.dxc.hlsl
+++ b/test/tint/bug/tint/804.spv.expected.dxc.hlsl
@@ -1,19 +1,7 @@
 SKIP: FAILED
 
 
-struct buf0 {
-  resolution : vec2<f32>,
-};
 
-struct S {
-  field0 : u32,
-  field1 : u32,
-};
+error: line:629: Block 191[%191] branches to the loop continue target 192[%192], but is not contained in the associated loop construct 162[%162]
+  OpBranch %192
 
-@group(0) @binding(0) var<uniform> x_75 : buf0;
-
-var<private> gl_FragCoord : vec4<f32>;
-
-var<private> x_GLF_color : vec4<f32>;
-
-error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/tint/bug/tint/804.spv.expected.fxc.hlsl b/test/tint/bug/tint/804.spv.expected.fxc.hlsl
index 146a132..be038c9 100644
--- a/test/tint/bug/tint/804.spv.expected.fxc.hlsl
+++ b/test/tint/bug/tint/804.spv.expected.fxc.hlsl
@@ -1,19 +1,7 @@
 SKIP: FAILED
 
 
-struct buf0 {
-  resolution : vec2<f32>,
-};
 
-struct S {
-  field0 : u32,
-  field1 : u32,
-};
+error: line:629: Block 191[%191] branches to the loop continue target 192[%192], but is not contained in the associated loop construct 162[%162]
+  OpBranch %192
 
-@group(0) @binding(0) var<uniform> x_75 : buf0;
-
-var<private> gl_FragCoord : vec4<f32>;
-
-var<private> x_GLF_color : vec4<f32>;
-
-error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/tint/bug/tint/804.spv.expected.glsl b/test/tint/bug/tint/804.spv.expected.glsl
index 1267d89..be038c9 100644
--- a/test/tint/bug/tint/804.spv.expected.glsl
+++ b/test/tint/bug/tint/804.spv.expected.glsl
@@ -1,19 +1,7 @@
 SKIP: FAILED
 
 
-struct buf0 {
-  resolution : vec2<f32>,
-}
 
-struct S {
-  field0 : u32,
-  field1 : u32,
-}
+error: line:629: Block 191[%191] branches to the loop continue target 192[%192], but is not contained in the associated loop construct 162[%162]
+  OpBranch %192
 
-@group(0) @binding(0) var<uniform> x_75 : buf0;
-
-var<private> gl_FragCoord : vec4<f32>;
-
-var<private> x_GLF_color : vec4<f32>;
-
-error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/tint/bug/tint/804.spv.expected.msl b/test/tint/bug/tint/804.spv.expected.msl
index 2bc83db..be038c9 100644
--- a/test/tint/bug/tint/804.spv.expected.msl
+++ b/test/tint/bug/tint/804.spv.expected.msl
@@ -1,3 +1,7 @@
 SKIP: FAILED
 
-error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
+
+
+error: line:629: Block 191[%191] branches to the loop continue target 192[%192], but is not contained in the associated loop construct 162[%162]
+  OpBranch %192
+
diff --git a/test/tint/bug/tint/804.spv.expected.spvasm b/test/tint/bug/tint/804.spv.expected.spvasm
index 2bc83db..be038c9 100644
--- a/test/tint/bug/tint/804.spv.expected.spvasm
+++ b/test/tint/bug/tint/804.spv.expected.spvasm
@@ -1,3 +1,7 @@
 SKIP: FAILED
 
-error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
+
+
+error: line:629: Block 191[%191] branches to the loop continue target 192[%192], but is not contained in the associated loop construct 162[%162]
+  OpBranch %192
+
diff --git a/test/tint/bug/tint/804.spv.expected.wgsl b/test/tint/bug/tint/804.spv.expected.wgsl
index 2bc83db..be038c9 100644
--- a/test/tint/bug/tint/804.spv.expected.wgsl
+++ b/test/tint/bug/tint/804.spv.expected.wgsl
@@ -1,3 +1,7 @@
 SKIP: FAILED
 
-error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
+
+
+error: line:629: Block 191[%191] branches to the loop continue target 192[%192], but is not contained in the associated loop construct 162[%162]
+  OpBranch %192
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.dxc.hlsl
index 9f06383..94acd78 100644
--- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.dxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.fxc.hlsl
index 9f06383..94acd78 100644
--- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.fxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl
index 9f06383..94acd78 100644
--- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.glsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.msl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.msl
index 9f06383..94acd78 100644
--- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.msl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.spvasm
index 9f06383..94acd78 100644
--- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.spvasm
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.wgsl
index 9f06383..94acd78 100644
--- a/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/8421b9.wgsl.expected.wgsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl
index 9f06383..5e5129d 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl
index 9f06383..5e5129d 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl
index 9f06383..5e5129d 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.glsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.msl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.msl
index 9f06383..5e5129d 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.msl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.spvasm
index 9f06383..5e5129d 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.spvasm
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.wgsl
index 9f06383..5e5129d 100644
--- a/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/arrayLength/cbd6b5.wgsl.expected.wgsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/literal/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
index 1e5e98d..4305443 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
@@ -15,6 +15,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -23,6 +24,7 @@
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -43,9 +45,11 @@
   } else {
     color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -69,9 +73,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:53: 'textureLoadExternal' : no matching overloaded function found 
-ERROR: 0:53: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:53: '' : compilation terminated 
+ERROR: 0:57: 'textureLoadExternal' : no matching overloaded function found 
+ERROR: 0:57: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:57: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -92,6 +96,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -100,6 +105,7 @@
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -120,9 +126,11 @@
   } else {
     color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -141,9 +149,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:54: 'textureLoadExternal' : no matching overloaded function found 
-ERROR: 0:54: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:54: '' : compilation terminated 
+ERROR: 0:58: 'textureLoadExternal' : no matching overloaded function found 
+ERROR: 0:58: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
+ERROR: 0:58: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -163,6 +171,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -171,6 +180,7 @@
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -191,9 +201,11 @@
   } else {
     color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -213,9 +225,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:53: 'textureLoadExternal' : no matching overloaded function found 
-ERROR: 0:53: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:53: '' : compilation terminated 
+ERROR: 0:57: 'textureLoadExternal' : no matching overloaded function found 
+ERROR: 0:57: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:57: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl
index f23800a..68b71f1 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/979816.wgsl.expected.glsl
@@ -15,6 +15,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -23,6 +24,7 @@
 
 layout(binding = 3) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -44,9 +46,11 @@
   } else {
     color = (vec4(textureLod(plane0_smp, coord, 0.0f).r, textureLod(plane1_smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -70,9 +74,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:54: 'textureSampleExternal' : no matching overloaded function found 
-ERROR: 0:54: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:54: '' : compilation terminated 
+ERROR: 0:58: 'textureSampleExternal' : no matching overloaded function found 
+ERROR: 0:58: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:58: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -93,6 +97,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -101,6 +106,7 @@
 
 layout(binding = 3) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -122,9 +128,11 @@
   } else {
     color = (vec4(textureLod(plane0_smp, coord, 0.0f).r, textureLod(plane1_smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -143,9 +151,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:55: 'textureSampleExternal' : no matching overloaded function found 
-ERROR: 0:55: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:55: '' : compilation terminated 
+ERROR: 0:59: 'textureSampleExternal' : no matching overloaded function found 
+ERROR: 0:59: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
+ERROR: 0:59: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -165,6 +173,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -173,6 +182,7 @@
 
 layout(binding = 3) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -194,9 +204,11 @@
   } else {
     color = (vec4(textureLod(plane0_smp, coord, 0.0f).r, textureLod(plane1_smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -216,9 +228,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:54: 'textureSampleExternal' : no matching overloaded function found 
-ERROR: 0:54: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:54: '' : compilation terminated 
+ERROR: 0:58: 'textureSampleExternal' : no matching overloaded function found 
+ERROR: 0:58: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:58: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.dxc.hlsl
index 9f06383..81ccfe7 100644
--- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.dxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.fxc.hlsl
index 9f06383..81ccfe7 100644
--- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.fxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl
index 9f06383..81ccfe7 100644
--- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.glsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.msl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.msl
index 9f06383..81ccfe7 100644
--- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.msl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.spvasm
index 9f06383..81ccfe7 100644
--- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.spvasm
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.wgsl
index 9f06383..81ccfe7 100644
--- a/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/8421b9.wgsl.expected.wgsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/8421b9.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl
index 9f06383..61546bd 100644
--- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.dxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl
index 9f06383..61546bd 100644
--- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.fxc.hlsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl
index 9f06383..61546bd 100644
--- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.glsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.msl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.msl
index 9f06383..61546bd 100644
--- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.msl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.spvasm
index 9f06383..61546bd 100644
--- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.spvasm
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.wgsl
index 9f06383..61546bd 100644
--- a/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/arrayLength/cbd6b5.wgsl.expected.wgsl
@@ -1 +1,6 @@
-SKIP
\ No newline at end of file
+SKIP: FAILED
+
+builtins/gen/var/arrayLength/cbd6b5.wgsl:26:16 error: f16 used without 'f16' extension enabled
+  arg_0: array<f16>,
+               ^^^
+
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
index 5f0b29c..2a7cc09 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
@@ -15,6 +15,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -23,6 +24,7 @@
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -43,9 +45,11 @@
   } else {
     color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -70,9 +74,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:54: 'textureLoadExternal' : no matching overloaded function found 
-ERROR: 0:54: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:54: '' : compilation terminated 
+ERROR: 0:58: 'textureLoadExternal' : no matching overloaded function found 
+ERROR: 0:58: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:58: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -93,6 +97,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -101,6 +106,7 @@
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -121,9 +127,11 @@
   } else {
     color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -143,9 +151,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:55: 'textureLoadExternal' : no matching overloaded function found 
-ERROR: 0:55: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:55: '' : compilation terminated 
+ERROR: 0:59: 'textureLoadExternal' : no matching overloaded function found 
+ERROR: 0:59: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
+ERROR: 0:59: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -165,6 +173,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -173,6 +182,7 @@
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -193,9 +203,11 @@
   } else {
     color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -216,9 +228,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:54: 'textureLoadExternal' : no matching overloaded function found 
-ERROR: 0:54: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:54: '' : compilation terminated 
+ERROR: 0:58: 'textureLoadExternal' : no matching overloaded function found 
+ERROR: 0:58: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:58: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl
index b55ac19..11782ba 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/979816.wgsl.expected.glsl
@@ -15,6 +15,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -23,6 +24,7 @@
 
 layout(binding = 3) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -44,9 +46,11 @@
   } else {
     color = (vec4(textureLod(plane0_smp, coord, 0.0f).r, textureLod(plane1_smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -71,9 +75,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:55: 'textureSampleExternal' : no matching overloaded function found 
-ERROR: 0:55: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:55: '' : compilation terminated 
+ERROR: 0:59: 'textureSampleExternal' : no matching overloaded function found 
+ERROR: 0:59: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:59: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -94,6 +98,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -102,6 +107,7 @@
 
 layout(binding = 3) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -123,9 +129,11 @@
   } else {
     color = (vec4(textureLod(plane0_smp, coord, 0.0f).r, textureLod(plane1_smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -145,9 +153,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:56: 'textureSampleExternal' : no matching overloaded function found 
-ERROR: 0:56: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:56: '' : compilation terminated 
+ERROR: 0:60: 'textureSampleExternal' : no matching overloaded function found 
+ERROR: 0:60: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
+ERROR: 0:60: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -167,6 +175,7 @@
 
 struct ExternalTextureParams {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -175,6 +184,7 @@
 
 layout(binding = 3) uniform ExternalTextureParams_1 {
   uint numPlanes;
+  uint doYuvToRgbConversionOnly;
   mat3x4 yuvToRgbConversionMatrix;
   GammaTransferParams gammaDecodeParams;
   GammaTransferParams gammaEncodeParams;
@@ -196,9 +206,11 @@
   } else {
     color = (vec4(textureLod(plane0_smp, coord, 0.0f).r, textureLod(plane1_smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  color = gammaCorrection(color, params.gammaDecodeParams);
-  color = (params.gamutConversionMatrix * color);
-  color = gammaCorrection(color, params.gammaEncodeParams);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
   return vec4(color, 1.0f);
 }
 
@@ -219,9 +231,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:55: 'textureSampleExternal' : no matching overloaded function found 
-ERROR: 0:55: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:55: '' : compilation terminated 
+ERROR: 0:59: 'textureSampleExternal' : no matching overloaded function found 
+ERROR: 0:59: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:59: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
index bed2c39..0d233de 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
@@ -2,34 +2,55 @@
 
 #version 310 es
 
+struct GammaTransferParams {
+  float G;
+  float A;
+  float B;
+  float C;
+  float D;
+  float E;
+  float F;
+  uint padding;
+};
+
 struct ExternalTextureParams {
   uint numPlanes;
-  float vr;
-  float ug;
-  float vg;
-  float ub;
+  uint doYuvToRgbConversionOnly;
+  mat3x4 yuvToRgbConversionMatrix;
+  GammaTransferParams gammaDecodeParams;
+  GammaTransferParams gammaEncodeParams;
+  mat3 gamutConversionMatrix;
 };
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
-  float vr;
-  float ug;
-  float vg;
-  float ub;
+  uint doYuvToRgbConversionOnly;
+  mat3x4 yuvToRgbConversionMatrix;
+  GammaTransferParams gammaDecodeParams;
+  GammaTransferParams gammaEncodeParams;
+  mat3 gamutConversionMatrix;
 } ext_tex_params;
 
+vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
+  bvec3 cond = lessThan(abs(v), vec3(params.D));
+  vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
+  vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
+  return mix(f, t, cond);
+}
+
 vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
+  vec3 color = vec3(0.0f, 0.0f, 0.0f);
   if ((params.numPlanes == 1u)) {
-    return texelFetch(plane0_1, coord, 0);
+    color = texelFetch(plane0_1, coord, 0).rgb;
+  } else {
+    color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  float y = (texelFetch(plane0_1, coord, 0).r - 0.0625f);
-  vec2 uv = (texelFetch(plane1_1, coord, 0).rg - 0.5f);
-  float u = uv.x;
-  float v = uv.y;
-  float r = ((1.164000034f * y) + (params.vr * v));
-  float g = (((1.164000034f * y) - (params.ug * u)) - (params.vg * v));
-  float b = ((1.164000034f * y) + (params.ub * u));
-  return vec4(r, g, b, 1.0f);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
+  return vec4(color, 1.0f);
 }
 
 vec4 textureLoad2d(highp sampler2D tint_symbol_1, highp sampler2D ext_tex_plane_1_1_1, ExternalTextureParams ext_tex_params_1, ivec2 coords) {
@@ -39,12 +60,12 @@
 uniform highp sampler2D arg_0_1;
 uniform highp sampler2D ext_tex_plane_1_2;
 void doTextureLoad() {
-  vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0, 0));
+  vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0));
 }
 
 vec4 vertex_main() {
   doTextureLoad();
-  return vec4(0.0f, 0.0f, 0.0f, 0.0f);
+  return vec4(0.0f);
 }
 
 void main() {
@@ -56,9 +77,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:40: 'textureLoad2d' : no matching overloaded function found 
-ERROR: 0:40: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:40: '' : compilation terminated 
+ERROR: 0:61: 'textureLoad2d' : no matching overloaded function found 
+ERROR: 0:61: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:61: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -66,34 +87,55 @@
 #version 310 es
 precision mediump float;
 
+struct GammaTransferParams {
+  float G;
+  float A;
+  float B;
+  float C;
+  float D;
+  float E;
+  float F;
+  uint padding;
+};
+
 struct ExternalTextureParams {
   uint numPlanes;
-  float vr;
-  float ug;
-  float vg;
-  float ub;
+  uint doYuvToRgbConversionOnly;
+  mat3x4 yuvToRgbConversionMatrix;
+  GammaTransferParams gammaDecodeParams;
+  GammaTransferParams gammaEncodeParams;
+  mat3 gamutConversionMatrix;
 };
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
-  float vr;
-  float ug;
-  float vg;
-  float ub;
+  uint doYuvToRgbConversionOnly;
+  mat3x4 yuvToRgbConversionMatrix;
+  GammaTransferParams gammaDecodeParams;
+  GammaTransferParams gammaEncodeParams;
+  mat3 gamutConversionMatrix;
 } ext_tex_params;
 
+vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
+  bvec3 cond = lessThan(abs(v), vec3(params.D));
+  vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
+  vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
+  return mix(f, t, cond);
+}
+
 vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
+  vec3 color = vec3(0.0f, 0.0f, 0.0f);
   if ((params.numPlanes == 1u)) {
-    return texelFetch(plane0_1, coord, 0);
+    color = texelFetch(plane0_1, coord, 0).rgb;
+  } else {
+    color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  float y = (texelFetch(plane0_1, coord, 0).r - 0.0625f);
-  vec2 uv = (texelFetch(plane1_1, coord, 0).rg - 0.5f);
-  float u = uv.x;
-  float v = uv.y;
-  float r = ((1.164000034f * y) + (params.vr * v));
-  float g = (((1.164000034f * y) - (params.ug * u)) - (params.vg * v));
-  float b = ((1.164000034f * y) + (params.ub * u));
-  return vec4(r, g, b, 1.0f);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
+  return vec4(color, 1.0f);
 }
 
 vec4 textureLoad2d(highp sampler2D tint_symbol_1, highp sampler2D ext_tex_plane_1_1_1, ExternalTextureParams ext_tex_params_1, ivec2 coords) {
@@ -103,7 +145,7 @@
 uniform highp sampler2D arg_0_1;
 uniform highp sampler2D ext_tex_plane_1_2;
 void doTextureLoad() {
-  vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0, 0));
+  vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0));
 }
 
 void fragment_main() {
@@ -115,43 +157,64 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:41: 'textureLoad2d' : no matching overloaded function found 
-ERROR: 0:41: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:41: '' : compilation terminated 
+ERROR: 0:62: 'textureLoad2d' : no matching overloaded function found 
+ERROR: 0:62: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
+ERROR: 0:62: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
 
 #version 310 es
 
+struct GammaTransferParams {
+  float G;
+  float A;
+  float B;
+  float C;
+  float D;
+  float E;
+  float F;
+  uint padding;
+};
+
 struct ExternalTextureParams {
   uint numPlanes;
-  float vr;
-  float ug;
-  float vg;
-  float ub;
+  uint doYuvToRgbConversionOnly;
+  mat3x4 yuvToRgbConversionMatrix;
+  GammaTransferParams gammaDecodeParams;
+  GammaTransferParams gammaEncodeParams;
+  mat3 gamutConversionMatrix;
 };
 
 layout(binding = 2) uniform ExternalTextureParams_1 {
   uint numPlanes;
-  float vr;
-  float ug;
-  float vg;
-  float ub;
+  uint doYuvToRgbConversionOnly;
+  mat3x4 yuvToRgbConversionMatrix;
+  GammaTransferParams gammaDecodeParams;
+  GammaTransferParams gammaEncodeParams;
+  mat3 gamutConversionMatrix;
 } ext_tex_params;
 
+vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
+  bvec3 cond = lessThan(abs(v), vec3(params.D));
+  vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
+  vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
+  return mix(f, t, cond);
+}
+
 vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
+  vec3 color = vec3(0.0f, 0.0f, 0.0f);
   if ((params.numPlanes == 1u)) {
-    return texelFetch(plane0_1, coord, 0);
+    color = texelFetch(plane0_1, coord, 0).rgb;
+  } else {
+    color = (vec4(texelFetch(plane0_1, coord, 0).r, texelFetch(plane1_1, coord, 0).rg, 1.0f) * params.yuvToRgbConversionMatrix);
   }
-  float y = (texelFetch(plane0_1, coord, 0).r - 0.0625f);
-  vec2 uv = (texelFetch(plane1_1, coord, 0).rg - 0.5f);
-  float u = uv.x;
-  float v = uv.y;
-  float r = ((1.164000034f * y) + (params.vr * v));
-  float g = (((1.164000034f * y) - (params.ug * u)) - (params.vg * v));
-  float b = ((1.164000034f * y) + (params.ub * u));
-  return vec4(r, g, b, 1.0f);
+  if ((params.doYuvToRgbConversionOnly == 0u)) {
+    color = gammaCorrection(color, params.gammaDecodeParams);
+    color = (params.gamutConversionMatrix * color);
+    color = gammaCorrection(color, params.gammaEncodeParams);
+  }
+  return vec4(color, 1.0f);
 }
 
 vec4 textureLoad2d(highp sampler2D tint_symbol_1, highp sampler2D ext_tex_plane_1_1_1, ExternalTextureParams ext_tex_params_1, ivec2 coords) {
@@ -161,7 +224,7 @@
 uniform highp sampler2D arg_0_1;
 uniform highp sampler2D ext_tex_plane_1_2;
 void doTextureLoad() {
-  vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0, 0));
+  vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params, ivec2(0));
 }
 
 void compute_main() {
@@ -174,9 +237,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:40: 'textureLoad2d' : no matching overloaded function found 
-ERROR: 0:40: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
-ERROR: 0:40: '' : compilation terminated 
+ERROR: 0:61: 'textureLoad2d' : no matching overloaded function found 
+ERROR: 0:61: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:61: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
index be5c091..6a38e8a 100644
--- a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
@@ -2,7 +2,7 @@
 
 #version 310 es
 
-vec4 tint_symbol_1 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
+vec4 tint_symbol_1 = vec4(0.0f);
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
   int res = 0;
@@ -18,7 +18,7 @@
 
 void vertex_main_1() {
   textureNumSamples_a3c8a0();
-  tint_symbol_2(vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  tint_symbol_2(vec4(0.0f));
   return;
 }
 
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.glsl
index 9f13868..9104946 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_0.spvasm.expected.glsl
@@ -5,7 +5,7 @@
 
 uniform highp sampler1D x_20_1;
 void main_1() {
-  vec4 x_125 = texelFetch(x_20_1, int(1u), 0);
+  vec4 x_125 = texelFetch(x_20_1, 1, 0);
   return;
 }
 
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
index b104a63..2d85a10 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
@@ -5,7 +5,7 @@
 
 layout(rg32f) uniform highp writeonly image1D x_20;
 void main_1() {
-  imageStore(x_20, int(1u), vec4(0.0f, 0.0f, 0.0f, 0.0f));
+  imageStore(x_20, 1, vec4(0.0f));
   return;
 }
 
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.glsl
index 72709a3..e147d8c 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_2.spvasm.expected.glsl
@@ -5,7 +5,7 @@
 
 uniform highp sampler1D x_20_1;
 void main_1() {
-  vec4 x_125 = texelFetch(x_20_1, int(0u), 0);
+  vec4 x_125 = texelFetch(x_20_1, 0, 0);
   return;
 }
 
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 b44e025..3e5c387 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
@@ -14,10 +14,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_ePdsZG:11: error: Loop must have break.
+shader.hlsl:11: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.fxc.hlsl
index b44e025..46fd51b 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ClassifyCFGEdges_LoopBreak_FromLoopHeader_SingleBlockLoop_TrueBranch.spvasm.expected.fxc.hlsl
@@ -14,11 +14,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_ePdsZG:11: 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 edb22e4..7c95459 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
@@ -15,10 +15,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_1aGHmE:12: error: Loop must have break.
+shader.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.fxc.hlsl
index edb22e4..4731e63 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_ComputeBlockOrder_Loop_HeaderHasBreakUnless.spvasm.expected.fxc.hlsl
@@ -15,11 +15,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_1aGHmE: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 34e3579..43a15a6 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
@@ -20,10 +20,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_M0JS53:17: error: Loop must have break.
+shader.hlsl:17: 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 34e3579..413885f 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
@@ -20,11 +20,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_M0JS53:17: error: Loop must have break.
-Validation failed.
-
-
-
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 c7387bd..220555b 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
@@ -18,10 +18,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_9dTIlS:15: error: Loop must have break.
+shader.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 c7387bd..945c429 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,11 +18,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_9dTIlS:15: error: Loop must have break.
-Validation failed.
-
-
-
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 0aaad00..2bc5a3b 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
@@ -30,10 +30,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_Rz6lq4:27: error: Loop must have break.
+shader.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 0aaad00..b704fdc 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,11 +30,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_Rz6lq4:27: error: Loop must have break.
-Validation failed.
-
-
-
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 bcca862..863d166 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
@@ -23,10 +23,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_T39Xh2:20: error: Loop must have break.
+shader.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 bcca862..9c2a726 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,11 +23,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_T39Xh2:20: error: Loop must have break.
-Validation failed.
-
-
-
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 cb1311b..7c95459 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
@@ -15,10 +15,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_lRzVSG:12: error: Loop must have break.
+shader.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.fxc.hlsl
index cb1311b..4731e63 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfSelection_TrueBranch_LoopBreak.spvasm.expected.fxc.hlsl
@@ -15,11 +15,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_lRzVSG: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 73f066c..95860ed 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
@@ -19,10 +19,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_KRVOs8:16: error: Loop must have break.
+shader.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 73f066c..ccef7a4 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,11 +19,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_KRVOs8:16: error: Loop must have break.
-Validation failed.
-
-
-
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 a919464..22dee7d 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
@@ -20,10 +20,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_tGC31y:17: error: Loop must have break.
+shader.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 a919464..75aaefc 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,11 +20,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_tGC31y:17: error: Loop must have break.
-Validation failed.
-
-
-
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 ba462d6..6328e71 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
@@ -18,10 +18,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_Iz92Ch:15: error: Loop must have break.
+shader.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 ba462d6..b12844b 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,11 +18,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_Iz92Ch:15: error: Loop must have break.
-Validation failed.
-
-
-
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 b132482..7c95459 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
@@ -15,10 +15,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_ABIRu4:12: error: Loop must have break.
+shader.hlsl:12: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.fxc.hlsl
index b132482..4731e63 100644
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserCFGTest_FindIfSelectionInternalHeaders_TrueBranch_LoopBreak_Ok.spvasm.expected.fxc.hlsl
@@ -15,11 +15,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_ABIRu4: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 4818f55..ef003ab 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
@@ -32,10 +32,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_LpDCMy:29: error: Loop must have break.
+shader.hlsl:29: 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 4818f55..2a99a69 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
@@ -32,11 +32,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_LpDCMy:29: error: Loop must have break.
-Validation failed.
-
-
-
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 ef00dd5..cf6d23e 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
@@ -1,6 +1,5 @@
 SKIP: FAILED
 
-warning: code is unreachable
 static uint x_1 = 0u;
 static bool x_7 = false;
 static bool x_8 = false;
@@ -26,7 +25,6 @@
       }
       continue;
     }
-    x_2_phi = 0u;
     {
       x_1 = x_2_phi;
     }
@@ -38,10 +36,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_l2mEof:34: error: Loop must have break.
+shader.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 ef00dd5..eddebbb 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
@@ -1,6 +1,5 @@
 SKIP: FAILED
 
-warning: code is unreachable
 static uint x_1 = 0u;
 static bool x_7 = false;
 static bool x_8 = false;
@@ -26,7 +25,6 @@
       }
       continue;
     }
-    x_2_phi = 0u;
     {
       x_1 = x_2_phi;
     }
@@ -38,11 +36,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_l2mEof:34: error: Loop must have break.
-Validation failed.
-
-
-
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 671644c..42a507b 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
@@ -1,6 +1,5 @@
 SKIP: FAILED
 
-warning: code is unreachable
 static uint x_1 = 0u;
 static bool x_7 = false;
 static bool x_8 = false;
@@ -26,7 +25,6 @@
       }
       continue;
     }
-    return;
     {
       x_1 = x_2_phi;
     }
@@ -38,10 +36,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_nu4hkX:34: error: Loop must have break.
+shader.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 671644c..935c533 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
@@ -1,6 +1,5 @@
 SKIP: FAILED
 
-warning: code is unreachable
 static uint x_1 = 0u;
 static bool x_7 = false;
 static bool x_8 = false;
@@ -26,7 +25,6 @@
       }
       continue;
     }
-    return;
     {
       x_1 = x_2_phi;
     }
@@ -38,11 +36,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_nu4hkX:34: error: Loop must have break.
-Validation failed.
-
-
-
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 e80132c..e9d44ff 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
@@ -36,10 +36,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_zJdet0:33: error: Loop must have break.
+shader.hlsl:33: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.fxc.hlsl
index e80132c..f4a795c 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_MultiBlockLoopIndex.spvasm.expected.fxc.hlsl
@@ -36,11 +36,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_zJdet0:33: 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 277b39f..c934a2d 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
@@ -31,10 +31,11 @@
   main_1();
   return;
 }
+DXC validation failure:
 warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
 
 error: validation errors
-/tmp/tint_XDVFVA:28: error: Loop must have break.
+shader.hlsl:28: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.fxc.hlsl b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.fxc.hlsl
index 277b39f..f1cdbbf 100644
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.fxc.hlsl
+++ b/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_SingleBlockLoopIndex.spvasm.expected.fxc.hlsl
@@ -31,11 +31,3 @@
   main_1();
   return;
 }
-warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
-
-error: validation errors
-/tmp/tint_XDVFVA:28: error: Loop must have break.
-Validation failed.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.dxc.hlsl
index 8c99b40..f969dee 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.dxc.hlsl
@@ -82,8 +82,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u1jmg.0:77: error: Loop must have break.
+shader.hlsl:77: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.fxc.hlsl
index 8c99b40..e42f19c 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.spvasm.expected.fxc.hlsl
@@ -82,9 +82,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u1jmg.0:77: error: Loop must have break.
-Validation failed.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.dxc.hlsl
index 3f39b82..f969dee 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.dxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.dxc.hlsl
@@ -82,8 +82,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u1v1c.0:77: error: Loop must have break.
+shader.hlsl:77: error: Loop must have break.
 Validation failed.
 
 
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.fxc.hlsl
index 3f39b82..e42f19c 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-dead-code-unreachable-merge/0-opt.wgsl.expected.fxc.hlsl
@@ -82,9 +82,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u1v1c.0:77: error: Loop must have break.
-Validation 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 582837a..1b11f28 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,3 +1,102 @@
 SKIP: FAILED
 
-exit status 0xc00000fd
\ No newline at end of file
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  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 uint scalar_offset = ((16u * 0u)) / 4;
+  const float x_42 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  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 = clamp(int(x_51), (x_54 | int(x_56)), x_60);
+  const int x_63 = asint(x_10[1].x);
+  i = x_63;
+  [loop] while (true) {
+    bool x_82 = false;
+    bool x_83_phi = false;
+    const int x_68 = i;
+    const uint scalar_offset_2 = ((16u * 0u)) / 4;
+    const int x_70 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    const int x_73 = b;
+    const uint scalar_offset_3 = ((16u * 0u)) / 4;
+    const int x_75 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    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;
+    }
+    if (x_83_phi) {
+      break;
+    }
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_90 = b;
+  const uint scalar_offset_4 = ((16u * 0u)) / 4;
+  const int x_92 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  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);
+    data[clamp(x_97, x_99, x_101)] = float4(float(x_104), float(x_107), float(x_110), float(x_113));
+  }
+  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;
+}
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 582837a..1b11f28 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,3 +1,102 @@
 SKIP: FAILED
 
-exit status 0xc00000fd
\ No newline at end of file
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  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 uint scalar_offset = ((16u * 0u)) / 4;
+  const float x_42 = asfloat(x_7[scalar_offset / 4][scalar_offset % 4]);
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
+  const float x_45 = asfloat(x_7[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+  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 = clamp(int(x_51), (x_54 | int(x_56)), x_60);
+  const int x_63 = asint(x_10[1].x);
+  i = x_63;
+  [loop] while (true) {
+    bool x_82 = false;
+    bool x_83_phi = false;
+    const int x_68 = i;
+    const uint scalar_offset_2 = ((16u * 0u)) / 4;
+    const int x_70 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+    if ((x_68 < x_70)) {
+    } else {
+      break;
+    }
+    const int x_73 = b;
+    const uint scalar_offset_3 = ((16u * 0u)) / 4;
+    const int x_75 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+    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;
+    }
+    if (x_83_phi) {
+      break;
+    }
+    b = (b + 1);
+    {
+      i = (i + 1);
+    }
+  }
+  const int x_90 = b;
+  const uint scalar_offset_4 = ((16u * 0u)) / 4;
+  const int x_92 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+  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);
+    data[clamp(x_97, x_99, x_101)] = float4(float(x_104), float(x_107), float(x_110), float(x_113));
+  }
+  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;
+}
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 15932bf..6418ea5 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,4 +1,4 @@
-SKIP: test times out after 30s with FXC
+SKIP: FAILED
 
 void set_scalar_float2x3(inout float2x3 mat, int col, int row, float val) {
   switch (col) {
@@ -168,14 +168,14 @@
   float sum = 0.0f;
   int r = 0;
   x_GLF_global_loop_count = 0;
-  m23 = float2x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
-  m24 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
-  m32 = float3x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
-  m33 = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
-  m34 = float3x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
-  m42 = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
-  m43 = float4x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
-  m44 = float4x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+  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;
   {
     [loop] for(; (i < 1); i = (i + 1)) {
@@ -409,7 +409,7 @@
   if ((sum == 8.0f)) {
     x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
-    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_GLF_color = (0.0f).xxxx;
   }
   return;
 }
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 15932bf..6418ea5 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,4 +1,4 @@
-SKIP: test times out after 30s with FXC
+SKIP: FAILED
 
 void set_scalar_float2x3(inout float2x3 mat, int col, int row, float val) {
   switch (col) {
@@ -168,14 +168,14 @@
   float sum = 0.0f;
   int r = 0;
   x_GLF_global_loop_count = 0;
-  m23 = float2x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
-  m24 = float2x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
-  m32 = float3x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
-  m33 = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
-  m34 = float3x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
-  m42 = float4x2(float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f), float2(0.0f, 0.0f));
-  m43 = float4x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
-  m44 = float4x4(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
+  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;
   {
     [loop] for(; (i < 1); i = (i + 1)) {
@@ -409,7 +409,7 @@
   if ((sum == 8.0f)) {
     x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
-    x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+    x_GLF_color = (0.0f).xxxx;
   }
   return;
 }
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 46f7ae7..5716a15 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
@@ -1 +1,302 @@
-SKIP: test times out after 30s with FXC
\ No newline at end of file
+SKIP: FAILED
+
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 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;
+  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;
+  [loop] while (true) {
+    const int x_60 = i;
+    const uint scalar_offset = ((16u * 0u)) / 4;
+    const int x_62 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    const int x_66 = asint(x_10[1].x);
+    i_1 = x_66;
+    [loop] while (true) {
+      const int x_71 = i_1;
+      const uint scalar_offset_1 = ((16u * 0u)) / 4;
+      const int x_73 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      const int x_77 = asint(x_10[1].x);
+      i_2 = x_77;
+      [loop] while (true) {
+        const int x_82 = i_2;
+        const uint scalar_offset_2 = ((16u * 0u)) / 4;
+        const int x_84 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        const int x_88 = asint(x_10[1].x);
+        i_3 = x_88;
+        [loop] while (true) {
+          const int x_93 = i_3;
+          const uint scalar_offset_3 = ((16u * 0u)) / 4;
+          const int x_95 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          const int x_99 = asint(x_10[1].x);
+          i_4 = x_99;
+          [loop] while (true) {
+            const int x_104 = i_4;
+            const uint scalar_offset_4 = ((16u * 0u)) / 4;
+            const int x_106 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            const int x_110 = asint(x_10[1].x);
+            i_5 = x_110;
+            [loop] while (true) {
+              const int x_115 = i_5;
+              const uint scalar_offset_5 = ((16u * 0u)) / 4;
+              const int x_117 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              const int x_121 = asint(x_10[1].x);
+              i_6 = x_121;
+              [loop] while (true) {
+                const int x_126 = i_6;
+                const uint scalar_offset_6 = ((16u * 0u)) / 4;
+                const int x_128 = asint(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                const int x_132 = asint(x_10[1].x);
+                i_7 = x_132;
+                [loop] while (true) {
+                  const int x_137 = i_7;
+                  const uint scalar_offset_7 = ((16u * 0u)) / 4;
+                  const int x_139 = asint(x_10[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  const int x_143 = asint(x_10[1].x);
+                  i_8 = x_143;
+                  [loop] while (true) {
+                    const int x_148 = i_8;
+                    const uint scalar_offset_8 = ((16u * 0u)) / 4;
+                    const int x_150 = asint(x_10[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    const int x_154 = asint(x_10[1].x);
+                    i_9 = x_154;
+                    [loop] while (true) {
+                      const int x_159 = i_9;
+                      const uint scalar_offset_9 = ((16u * 0u)) / 4;
+                      const int x_161 = asint(x_10[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      const int x_165 = asint(x_10[1].x);
+                      i_10 = x_165;
+                      [loop] while (true) {
+                        const int x_170 = i_10;
+                        const uint scalar_offset_10 = ((16u * 0u)) / 4;
+                        const int x_172 = asint(x_10[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        const int x_176 = asint(x_10[1].x);
+                        i_11 = x_176;
+                        [loop] while (true) {
+                          const int x_181 = i_11;
+                          const int x_183 = asint(x_10[2].x);
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          const int x_187 = asint(x_10[1].x);
+                          i_12 = x_187;
+                          [loop] while (true) {
+                            const int x_192 = i_12;
+                            const uint scalar_offset_11 = ((16u * 0u)) / 4;
+                            const int x_194 = asint(x_10[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            const int x_198 = asint(x_10[1].x);
+                            i_13 = x_198;
+                            [loop] while (true) {
+                              const int x_203 = i_13;
+                              const uint scalar_offset_12 = ((16u * 0u)) / 4;
+                              const int x_205 = asint(x_10[scalar_offset_12 / 4][scalar_offset_12 % 4]);
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              const int x_209 = asint(x_10[1].x);
+                              i_14 = x_209;
+                              [loop] while (true) {
+                                const int x_214 = i_14;
+                                const int x_216 = asint(x_10[2].x);
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                [loop] while (true) {
+                                  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);
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                const uint scalar_offset_13 = ((16u * 0u)) / 4;
+                                const float x_231 = asfloat(x_7[scalar_offset_13 / 4][scalar_offset_13 % 4]);
+                                f = (f + x_231);
+                                {
+                                  i_14 = (i_14 + 1);
+                                }
+                              }
+                              {
+                                i_13 = (i_13 + 1);
+                              }
+                            }
+                            {
+                              i_12 = (i_12 + 1);
+                            }
+                          }
+                          {
+                            i_11 = (i_11 + 1);
+                          }
+                        }
+                        {
+                          i_10 = (i_10 + 1);
+                        }
+                      }
+                      {
+                        i_9 = (i_9 + 1);
+                      }
+                    }
+                    {
+                      i_8 = (i_8 + 1);
+                    }
+                  }
+                  {
+                    i_7 = (i_7 + 1);
+                  }
+                }
+                {
+                  i_6 = (i_6 + 1);
+                }
+              }
+              {
+                i_5 = (i_5 + 1);
+              }
+            }
+            {
+              i_4 = (i_4 + 1);
+            }
+          }
+          {
+            i_3 = (i_3 + 1);
+          }
+        }
+        {
+          i_2 = (i_2 + 1);
+        }
+      }
+      {
+        i_1 = (i_1 + 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;
+  {
+    [loop] for(; (x_GLF_global_loop_count < 100); r = (r + 1)) {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      sum = (sum + f);
+    }
+  }
+  const float x_282 = sum;
+  const float x_284 = asfloat(x_7[2].x);
+  if ((x_282 == x_284)) {
+    const uint scalar_offset_14 = ((16u * 0u)) / 4;
+    const int x_290 = asint(x_10[scalar_offset_14 / 4][scalar_offset_14 % 4]);
+    const int x_293 = asint(x_10[1].x);
+    const int x_296 = asint(x_10[1].x);
+    const uint scalar_offset_15 = ((16u * 0u)) / 4;
+    const int x_299 = asint(x_10[scalar_offset_15 / 4][scalar_offset_15 % 4]);
+    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);
+    x_GLF_color = float4(x_304, x_304, x_304, x_304);
+  }
+  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_3 = {x_GLF_color};
+  return tint_symbol_3;
+}
+
+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;
+}
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 46f7ae7..5716a15 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
@@ -1 +1,302 @@
-SKIP: test times out after 30s with FXC
\ No newline at end of file
+SKIP: FAILED
+
+static int x_GLF_global_loop_count = 0;
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[3];
+};
+cbuffer cbuffer_x_10 : register(b1, space0) {
+  uint4 x_10[4];
+};
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float f = 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;
+  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;
+  [loop] while (true) {
+    const int x_60 = i;
+    const uint scalar_offset = ((16u * 0u)) / 4;
+    const int x_62 = asint(x_10[scalar_offset / 4][scalar_offset % 4]);
+    if ((x_60 < x_62)) {
+    } else {
+      break;
+    }
+    const int x_66 = asint(x_10[1].x);
+    i_1 = x_66;
+    [loop] while (true) {
+      const int x_71 = i_1;
+      const uint scalar_offset_1 = ((16u * 0u)) / 4;
+      const int x_73 = asint(x_10[scalar_offset_1 / 4][scalar_offset_1 % 4]);
+      if ((x_71 < x_73)) {
+      } else {
+        break;
+      }
+      const int x_77 = asint(x_10[1].x);
+      i_2 = x_77;
+      [loop] while (true) {
+        const int x_82 = i_2;
+        const uint scalar_offset_2 = ((16u * 0u)) / 4;
+        const int x_84 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
+        if ((x_82 < x_84)) {
+        } else {
+          break;
+        }
+        const int x_88 = asint(x_10[1].x);
+        i_3 = x_88;
+        [loop] while (true) {
+          const int x_93 = i_3;
+          const uint scalar_offset_3 = ((16u * 0u)) / 4;
+          const int x_95 = asint(x_10[scalar_offset_3 / 4][scalar_offset_3 % 4]);
+          if ((x_93 < x_95)) {
+          } else {
+            break;
+          }
+          const int x_99 = asint(x_10[1].x);
+          i_4 = x_99;
+          [loop] while (true) {
+            const int x_104 = i_4;
+            const uint scalar_offset_4 = ((16u * 0u)) / 4;
+            const int x_106 = asint(x_10[scalar_offset_4 / 4][scalar_offset_4 % 4]);
+            if ((x_104 < x_106)) {
+            } else {
+              break;
+            }
+            const int x_110 = asint(x_10[1].x);
+            i_5 = x_110;
+            [loop] while (true) {
+              const int x_115 = i_5;
+              const uint scalar_offset_5 = ((16u * 0u)) / 4;
+              const int x_117 = asint(x_10[scalar_offset_5 / 4][scalar_offset_5 % 4]);
+              if ((x_115 < x_117)) {
+              } else {
+                break;
+              }
+              const int x_121 = asint(x_10[1].x);
+              i_6 = x_121;
+              [loop] while (true) {
+                const int x_126 = i_6;
+                const uint scalar_offset_6 = ((16u * 0u)) / 4;
+                const int x_128 = asint(x_10[scalar_offset_6 / 4][scalar_offset_6 % 4]);
+                if ((x_126 < x_128)) {
+                } else {
+                  break;
+                }
+                const int x_132 = asint(x_10[1].x);
+                i_7 = x_132;
+                [loop] while (true) {
+                  const int x_137 = i_7;
+                  const uint scalar_offset_7 = ((16u * 0u)) / 4;
+                  const int x_139 = asint(x_10[scalar_offset_7 / 4][scalar_offset_7 % 4]);
+                  if ((x_137 < x_139)) {
+                  } else {
+                    break;
+                  }
+                  const int x_143 = asint(x_10[1].x);
+                  i_8 = x_143;
+                  [loop] while (true) {
+                    const int x_148 = i_8;
+                    const uint scalar_offset_8 = ((16u * 0u)) / 4;
+                    const int x_150 = asint(x_10[scalar_offset_8 / 4][scalar_offset_8 % 4]);
+                    if ((x_148 < x_150)) {
+                    } else {
+                      break;
+                    }
+                    const int x_154 = asint(x_10[1].x);
+                    i_9 = x_154;
+                    [loop] while (true) {
+                      const int x_159 = i_9;
+                      const uint scalar_offset_9 = ((16u * 0u)) / 4;
+                      const int x_161 = asint(x_10[scalar_offset_9 / 4][scalar_offset_9 % 4]);
+                      if ((x_159 < x_161)) {
+                      } else {
+                        break;
+                      }
+                      const int x_165 = asint(x_10[1].x);
+                      i_10 = x_165;
+                      [loop] while (true) {
+                        const int x_170 = i_10;
+                        const uint scalar_offset_10 = ((16u * 0u)) / 4;
+                        const int x_172 = asint(x_10[scalar_offset_10 / 4][scalar_offset_10 % 4]);
+                        if ((x_170 < x_172)) {
+                        } else {
+                          break;
+                        }
+                        const int x_176 = asint(x_10[1].x);
+                        i_11 = x_176;
+                        [loop] while (true) {
+                          const int x_181 = i_11;
+                          const int x_183 = asint(x_10[2].x);
+                          if ((x_181 < x_183)) {
+                          } else {
+                            break;
+                          }
+                          const int x_187 = asint(x_10[1].x);
+                          i_12 = x_187;
+                          [loop] while (true) {
+                            const int x_192 = i_12;
+                            const uint scalar_offset_11 = ((16u * 0u)) / 4;
+                            const int x_194 = asint(x_10[scalar_offset_11 / 4][scalar_offset_11 % 4]);
+                            if ((x_192 < x_194)) {
+                            } else {
+                              break;
+                            }
+                            const int x_198 = asint(x_10[1].x);
+                            i_13 = x_198;
+                            [loop] while (true) {
+                              const int x_203 = i_13;
+                              const uint scalar_offset_12 = ((16u * 0u)) / 4;
+                              const int x_205 = asint(x_10[scalar_offset_12 / 4][scalar_offset_12 % 4]);
+                              if ((x_203 < x_205)) {
+                              } else {
+                                break;
+                              }
+                              const int x_209 = asint(x_10[1].x);
+                              i_14 = x_209;
+                              [loop] while (true) {
+                                const int x_214 = i_14;
+                                const int x_216 = asint(x_10[2].x);
+                                if ((x_214 < x_216)) {
+                                } else {
+                                  break;
+                                }
+                                [loop] while (true) {
+                                  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);
+                                    if ((x_225 < (100 - x_227))) {
+                                    } else {
+                                      break;
+                                    }
+                                  }
+                                }
+                                const uint scalar_offset_13 = ((16u * 0u)) / 4;
+                                const float x_231 = asfloat(x_7[scalar_offset_13 / 4][scalar_offset_13 % 4]);
+                                f = (f + x_231);
+                                {
+                                  i_14 = (i_14 + 1);
+                                }
+                              }
+                              {
+                                i_13 = (i_13 + 1);
+                              }
+                            }
+                            {
+                              i_12 = (i_12 + 1);
+                            }
+                          }
+                          {
+                            i_11 = (i_11 + 1);
+                          }
+                        }
+                        {
+                          i_10 = (i_10 + 1);
+                        }
+                      }
+                      {
+                        i_9 = (i_9 + 1);
+                      }
+                    }
+                    {
+                      i_8 = (i_8 + 1);
+                    }
+                  }
+                  {
+                    i_7 = (i_7 + 1);
+                  }
+                }
+                {
+                  i_6 = (i_6 + 1);
+                }
+              }
+              {
+                i_5 = (i_5 + 1);
+              }
+            }
+            {
+              i_4 = (i_4 + 1);
+            }
+          }
+          {
+            i_3 = (i_3 + 1);
+          }
+        }
+        {
+          i_2 = (i_2 + 1);
+        }
+      }
+      {
+        i_1 = (i_1 + 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;
+  {
+    [loop] for(; (x_GLF_global_loop_count < 100); r = (r + 1)) {
+      x_GLF_global_loop_count = (x_GLF_global_loop_count + 1);
+      sum = (sum + f);
+    }
+  }
+  const float x_282 = sum;
+  const float x_284 = asfloat(x_7[2].x);
+  if ((x_282 == x_284)) {
+    const uint scalar_offset_14 = ((16u * 0u)) / 4;
+    const int x_290 = asint(x_10[scalar_offset_14 / 4][scalar_offset_14 % 4]);
+    const int x_293 = asint(x_10[1].x);
+    const int x_296 = asint(x_10[1].x);
+    const uint scalar_offset_15 = ((16u * 0u)) / 4;
+    const int x_299 = asint(x_10[scalar_offset_15 / 4][scalar_offset_15 % 4]);
+    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);
+    x_GLF_color = float4(x_304, x_304, x_304, x_304);
+  }
+  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_3 = {x_GLF_color};
+  return tint_symbol_3;
+}
+
+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;
+}
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 b0131b4..556cf91 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,25 +6,25 @@
 };
 
 void main_1() {
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const int x_22 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
   const int x_25 = asint(x_5[1].x);
   const int x_28 = asint(x_5[1].x);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const int x_31 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
   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 uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_2 = ((16u * 0u)) / 4;
   const int x_37 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
   if ((x_35 > x_37)) {
     [loop] while (true) {
-      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const uint scalar_offset_3 = ((16u * 0u)) / 4;
       const int x_46 = asint(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
       const 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 uint scalar_offset_4 = ((16u * uint(0))) / 4;
+        const uint scalar_offset_4 = ((16u * 0u)) / 4;
         const int x_52 = asint(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
         if ((x_50 > x_52)) {
         } else {
@@ -56,5 +56,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000002307D6F3EA0(18,19-22): 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 721c4f2..556cf91 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,25 +6,25 @@
 };
 
 void main_1() {
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const int x_22 = asint(x_5[scalar_offset / 4][scalar_offset % 4]);
   const int x_25 = asint(x_5[1].x);
   const int x_28 = asint(x_5[1].x);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const int x_31 = asint(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
   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 uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_2 = ((16u * 0u)) / 4;
   const int x_37 = asint(x_5[scalar_offset_2 / 4][scalar_offset_2 % 4]);
   if ((x_35 > x_37)) {
     [loop] while (true) {
-      const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+      const uint scalar_offset_3 = ((16u * 0u)) / 4;
       const int x_46 = asint(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
       const 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 uint scalar_offset_4 = ((16u * uint(0))) / 4;
+        const uint scalar_offset_4 = ((16u * 0u)) / 4;
         const int x_52 = asint(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
         if ((x_50 > x_52)) {
         } else {
@@ -56,5 +56,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001AB97856630(18,19-22): 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.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.spvasm.expected.dxc.hlsl
index cc34599..b158cea 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,11 +13,11 @@
 
 void main_1() {
   int i = 0;
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const float x_38 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
   x_GLF_color = float4(x_38, x_38, x_38, x_38);
   const float x_41 = asfloat(x_7[0].x);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const float x_43 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
   if ((x_41 > x_43)) {
     [loop] while (true) {
@@ -41,16 +41,16 @@
         i = x_13;
         [loop] while (true) {
           const int x_14 = i;
-          const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_2 = ((16u * 0u)) / 4;
           const int x_15 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
           if ((x_14 < x_15)) {
           } else {
             break;
           }
           const float x_73 = asfloat(x_5[1].x);
-          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_3 = ((16u * 0u)) / 4;
           const float x_75 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
-          const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_4 = ((16u * 0u)) / 4;
           const float x_77 = asfloat(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
           const float x_79 = asfloat(x_5[1].x);
           x_GLF_color = float4(x_73, x_75, x_77, x_79);
@@ -62,7 +62,7 @@
       }
       {
         const float x_82 = asfloat(x_7[0].x);
-        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const uint scalar_offset_5 = ((16u * 0u)) / 4;
         const float x_84 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
         if ((x_82 > x_84)) {
         } else {
@@ -93,8 +93,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u1r54.0:88: error: Loop must have break.
+shader.hlsl:88: 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 cc34599..5fbdf33 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,11 +13,11 @@
 
 void main_1() {
   int i = 0;
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const float x_38 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
   x_GLF_color = float4(x_38, x_38, x_38, x_38);
   const float x_41 = asfloat(x_7[0].x);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const float x_43 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
   if ((x_41 > x_43)) {
     [loop] while (true) {
@@ -41,16 +41,16 @@
         i = x_13;
         [loop] while (true) {
           const int x_14 = i;
-          const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_2 = ((16u * 0u)) / 4;
           const int x_15 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
           if ((x_14 < x_15)) {
           } else {
             break;
           }
           const float x_73 = asfloat(x_5[1].x);
-          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_3 = ((16u * 0u)) / 4;
           const float x_75 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
-          const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_4 = ((16u * 0u)) / 4;
           const float x_77 = asfloat(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
           const float x_79 = asfloat(x_5[1].x);
           x_GLF_color = float4(x_73, x_75, x_77, x_79);
@@ -62,7 +62,7 @@
       }
       {
         const float x_82 = asfloat(x_7[0].x);
-        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const uint scalar_offset_5 = ((16u * 0u)) / 4;
         const float x_84 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
         if ((x_82 > x_84)) {
         } else {
@@ -93,9 +93,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u1r54.0:88: 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.dxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-tail-duplicator-infinite-loops/0-opt.wgsl.expected.dxc.hlsl
index ed4dfc7..b158cea 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,11 +13,11 @@
 
 void main_1() {
   int i = 0;
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const float x_38 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
   x_GLF_color = float4(x_38, x_38, x_38, x_38);
   const float x_41 = asfloat(x_7[0].x);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const float x_43 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
   if ((x_41 > x_43)) {
     [loop] while (true) {
@@ -41,16 +41,16 @@
         i = x_13;
         [loop] while (true) {
           const int x_14 = i;
-          const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_2 = ((16u * 0u)) / 4;
           const int x_15 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
           if ((x_14 < x_15)) {
           } else {
             break;
           }
           const float x_73 = asfloat(x_5[1].x);
-          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_3 = ((16u * 0u)) / 4;
           const float x_75 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
-          const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_4 = ((16u * 0u)) / 4;
           const float x_77 = asfloat(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
           const float x_79 = asfloat(x_5[1].x);
           x_GLF_color = float4(x_73, x_75, x_77, x_79);
@@ -62,7 +62,7 @@
       }
       {
         const float x_82 = asfloat(x_7[0].x);
-        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const uint scalar_offset_5 = ((16u * 0u)) / 4;
         const float x_84 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
         if ((x_82 > x_84)) {
         } else {
@@ -93,8 +93,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\usgc.0:88: error: Loop must have break.
+shader.hlsl:88: 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 ed4dfc7..5fbdf33 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,11 +13,11 @@
 
 void main_1() {
   int i = 0;
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const float x_38 = asfloat(x_5[scalar_offset / 4][scalar_offset % 4]);
   x_GLF_color = float4(x_38, x_38, x_38, x_38);
   const float x_41 = asfloat(x_7[0].x);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const float x_43 = asfloat(x_5[scalar_offset_1 / 4][scalar_offset_1 % 4]);
   if ((x_41 > x_43)) {
     [loop] while (true) {
@@ -41,16 +41,16 @@
         i = x_13;
         [loop] while (true) {
           const int x_14 = i;
-          const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_2 = ((16u * 0u)) / 4;
           const int x_15 = asint(x_10[scalar_offset_2 / 4][scalar_offset_2 % 4]);
           if ((x_14 < x_15)) {
           } else {
             break;
           }
           const float x_73 = asfloat(x_5[1].x);
-          const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_3 = ((16u * 0u)) / 4;
           const float x_75 = asfloat(x_5[scalar_offset_3 / 4][scalar_offset_3 % 4]);
-          const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+          const uint scalar_offset_4 = ((16u * 0u)) / 4;
           const float x_77 = asfloat(x_5[scalar_offset_4 / 4][scalar_offset_4 % 4]);
           const float x_79 = asfloat(x_5[1].x);
           x_GLF_color = float4(x_73, x_75, x_77, x_79);
@@ -62,7 +62,7 @@
       }
       {
         const float x_82 = asfloat(x_7[0].x);
-        const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+        const uint scalar_offset_5 = ((16u * 0u)) / 4;
         const float x_84 = asfloat(x_5[scalar_offset_5 / 4][scalar_offset_5 % 4]);
         if ((x_82 > x_84)) {
         } else {
@@ -93,9 +93,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\usgc.0:88: error: Loop must have break.
-Validation failed.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.fxc.hlsl
index 5b9bdf5..abb85d5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.fxc.hlsl
@@ -17,7 +17,7 @@
   }
 }
 
-struct tint_padded_array_element {
+struct strided_arr {
   float el;
 };
 
@@ -31,29 +31,32 @@
 
 void main_1() {
   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);
-  tint_padded_array_element sums[3] = (tint_padded_array_element[3])0;
+  strided_arr sums[3] = (strided_arr[3])0;
   int i = 0;
   int a = 0;
   int x_67_phi = 0;
   const float x_44 = asfloat(x_6[1].x);
-  const float3 x_48 = float3(0.0f, 0.0f, 0.0f);
-  m43 = float4x3(float3(x_44, 0.0f, 0.0f), float3(0.0f, x_44, 0.0f), float3(0.0f, 0.0f, x_44), float3(0.0f, 0.0f, 0.0f));
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float3 x_48 = (0.0f).xxx;
+  m43 = float4x3(float3(x_44, 0.0f, 0.0f), float3(0.0f, x_44, 0.0f), float3(0.0f, 0.0f, x_44), (0.0f).xxx);
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const int x_51 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const int x_53 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
-  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_2 = ((16u * 0u)) / 4;
   const float x_55 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
   set_scalar_float4x3(m43, x_53, x_51, x_55);
-  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_3 = ((16u * 0u)) / 4;
   const float x_58 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
-  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_4 = ((16u * 0u)) / 4;
   const float x_60 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
-  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_5 = ((16u * 0u)) / 4;
   const float x_62 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
-  const tint_padded_array_element tint_symbol_3[3] = {{x_58}, {x_60}, {x_62}};
-  sums = tint_symbol_3;
-  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const strided_arr tint_symbol_3 = {x_58};
+  const strided_arr tint_symbol_4 = {x_60};
+  const strided_arr tint_symbol_5 = {x_62};
+  const strided_arr tint_symbol_6[3] = {tint_symbol_3, tint_symbol_4, tint_symbol_5};
+  sums = tint_symbol_6;
+  const uint scalar_offset_6 = ((16u * 0u)) / 4;
   const int x_65 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
   i = x_65;
   x_67_phi = x_65;
@@ -64,9 +67,9 @@
     } else {
       break;
     }
-    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_7 = ((16u * 0u)) / 4;
     const int x_77 = asint(x_8[scalar_offset_7 / 4][scalar_offset_7 % 4]);
-    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_8 = ((16u * 0u)) / 4;
     const int x_79 = asint(x_8[scalar_offset_8 / 4][scalar_offset_8 % 4]);
     const float x_81 = m43[x_67][x_79];
     const float x_83 = sums[x_77].el;
@@ -81,7 +84,7 @@
   if ((x_87 == 1)) {
     a = 4;
     const int x_92 = asint(x_8[2].x);
-    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_9 = ((16u * 0u)) / 4;
     const int x_94 = asint(x_8[scalar_offset_9 / 4][scalar_offset_9 % 4]);
     const float x_96 = m43[4][x_94];
     const float x_98 = sums[x_92].el;
@@ -89,16 +92,16 @@
   }
   const int x_102 = asint(x_8[1].x);
   const float x_104 = sums[x_102].el;
-  const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_10 = ((16u * 0u)) / 4;
   const int x_106 = asint(x_8[scalar_offset_10 / 4][scalar_offset_10 % 4]);
   const float x_108 = sums[x_106].el;
   const float x_111 = asfloat(x_6[2].x);
   if (((x_104 + x_108) == x_111)) {
-    const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_11 = ((16u * 0u)) / 4;
     const int x_117 = asint(x_8[scalar_offset_11 / 4][scalar_offset_11 % 4]);
     const int x_120 = asint(x_8[1].x);
     const int x_123 = asint(x_8[1].x);
-    const uint scalar_offset_12 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_12 = ((16u * 0u)) / 4;
     const int x_126 = asint(x_8[scalar_offset_12 / 4][scalar_offset_12 % 4]);
     x_GLF_color = float4(float(x_117), float(x_120), float(x_123), float(x_126));
   } else {
@@ -118,8 +121,8 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_4 = {x_GLF_color};
-  return tint_symbol_4;
+  const main_out tint_symbol_7 = {x_GLF_color};
+  return tint_symbol_7;
 }
 
 tint_symbol main() {
@@ -128,5 +131,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x00000111C3C21900(84,24-29): error X3504: array index out of bounds
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl
index 005362d..e7e10ee 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.spvasm.expected.glsl
@@ -36,8 +36,8 @@
   int a = 0;
   int x_67_phi = 0;
   float x_44 = x_6.x_GLF_uniform_float_values[1].el;
-  vec3 x_48 = vec3(0.0f, 0.0f, 0.0f);
-  m43 = mat4x3(vec3(x_44, 0.0f, 0.0f), vec3(0.0f, x_44, 0.0f), vec3(0.0f, 0.0f, x_44), vec3(0.0f, 0.0f, 0.0f));
+  vec3 x_48 = vec3(0.0f);
+  m43 = mat4x3(vec3(x_44, 0.0f, 0.0f), vec3(0.0f, x_44, 0.0f), vec3(0.0f, 0.0f, x_44), vec3(0.0f));
   int x_51 = x_8.x_GLF_uniform_int_values[0].el;
   int x_53 = x_8.x_GLF_uniform_int_values[0].el;
   float x_55 = x_6.x_GLF_uniform_float_values[0].el;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.fxc.hlsl
index 5ab81af..abb85d5 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.fxc.hlsl
@@ -17,7 +17,7 @@
   }
 }
 
-struct tint_padded_array_element {
+struct strided_arr {
   float el;
 };
 
@@ -31,29 +31,32 @@
 
 void main_1() {
   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);
-  tint_padded_array_element sums[3] = (tint_padded_array_element[3])0;
+  strided_arr sums[3] = (strided_arr[3])0;
   int i = 0;
   int a = 0;
   int x_67_phi = 0;
   const float x_44 = asfloat(x_6[1].x);
-  const float3 x_48 = float3(0.0f, 0.0f, 0.0f);
-  m43 = float4x3(float3(x_44, 0.0f, 0.0f), float3(0.0f, x_44, 0.0f), float3(0.0f, 0.0f, x_44), float3(0.0f, 0.0f, 0.0f));
-  const uint scalar_offset = ((16u * uint(0))) / 4;
+  const float3 x_48 = (0.0f).xxx;
+  m43 = float4x3(float3(x_44, 0.0f, 0.0f), float3(0.0f, x_44, 0.0f), float3(0.0f, 0.0f, x_44), (0.0f).xxx);
+  const uint scalar_offset = ((16u * 0u)) / 4;
   const int x_51 = asint(x_8[scalar_offset / 4][scalar_offset % 4]);
-  const uint scalar_offset_1 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_1 = ((16u * 0u)) / 4;
   const int x_53 = asint(x_8[scalar_offset_1 / 4][scalar_offset_1 % 4]);
-  const uint scalar_offset_2 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_2 = ((16u * 0u)) / 4;
   const float x_55 = asfloat(x_6[scalar_offset_2 / 4][scalar_offset_2 % 4]);
   set_scalar_float4x3(m43, x_53, x_51, x_55);
-  const uint scalar_offset_3 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_3 = ((16u * 0u)) / 4;
   const float x_58 = asfloat(x_6[scalar_offset_3 / 4][scalar_offset_3 % 4]);
-  const uint scalar_offset_4 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_4 = ((16u * 0u)) / 4;
   const float x_60 = asfloat(x_6[scalar_offset_4 / 4][scalar_offset_4 % 4]);
-  const uint scalar_offset_5 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_5 = ((16u * 0u)) / 4;
   const float x_62 = asfloat(x_6[scalar_offset_5 / 4][scalar_offset_5 % 4]);
-  const tint_padded_array_element tint_symbol_3[3] = {{x_58}, {x_60}, {x_62}};
-  sums = tint_symbol_3;
-  const uint scalar_offset_6 = ((16u * uint(0))) / 4;
+  const strided_arr tint_symbol_3 = {x_58};
+  const strided_arr tint_symbol_4 = {x_60};
+  const strided_arr tint_symbol_5 = {x_62};
+  const strided_arr tint_symbol_6[3] = {tint_symbol_3, tint_symbol_4, tint_symbol_5};
+  sums = tint_symbol_6;
+  const uint scalar_offset_6 = ((16u * 0u)) / 4;
   const int x_65 = asint(x_8[scalar_offset_6 / 4][scalar_offset_6 % 4]);
   i = x_65;
   x_67_phi = x_65;
@@ -64,9 +67,9 @@
     } else {
       break;
     }
-    const uint scalar_offset_7 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_7 = ((16u * 0u)) / 4;
     const int x_77 = asint(x_8[scalar_offset_7 / 4][scalar_offset_7 % 4]);
-    const uint scalar_offset_8 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_8 = ((16u * 0u)) / 4;
     const int x_79 = asint(x_8[scalar_offset_8 / 4][scalar_offset_8 % 4]);
     const float x_81 = m43[x_67][x_79];
     const float x_83 = sums[x_77].el;
@@ -81,7 +84,7 @@
   if ((x_87 == 1)) {
     a = 4;
     const int x_92 = asint(x_8[2].x);
-    const uint scalar_offset_9 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_9 = ((16u * 0u)) / 4;
     const int x_94 = asint(x_8[scalar_offset_9 / 4][scalar_offset_9 % 4]);
     const float x_96 = m43[4][x_94];
     const float x_98 = sums[x_92].el;
@@ -89,16 +92,16 @@
   }
   const int x_102 = asint(x_8[1].x);
   const float x_104 = sums[x_102].el;
-  const uint scalar_offset_10 = ((16u * uint(0))) / 4;
+  const uint scalar_offset_10 = ((16u * 0u)) / 4;
   const int x_106 = asint(x_8[scalar_offset_10 / 4][scalar_offset_10 % 4]);
   const float x_108 = sums[x_106].el;
   const float x_111 = asfloat(x_6[2].x);
   if (((x_104 + x_108) == x_111)) {
-    const uint scalar_offset_11 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_11 = ((16u * 0u)) / 4;
     const int x_117 = asint(x_8[scalar_offset_11 / 4][scalar_offset_11 % 4]);
     const int x_120 = asint(x_8[1].x);
     const int x_123 = asint(x_8[1].x);
-    const uint scalar_offset_12 = ((16u * uint(0))) / 4;
+    const uint scalar_offset_12 = ((16u * 0u)) / 4;
     const int x_126 = asint(x_8[scalar_offset_12 / 4][scalar_offset_12 % 4]);
     x_GLF_color = float4(float(x_117), float(x_120), float(x_123), float(x_126));
   } else {
@@ -118,8 +121,8 @@
 
 main_out main_inner() {
   main_1();
-  const main_out tint_symbol_4 = {x_GLF_color};
-  return tint_symbol_4;
+  const main_out tint_symbol_7 = {x_GLF_color};
+  return tint_symbol_7;
 }
 
 tint_symbol main() {
@@ -128,5 +131,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000020DD7F92800(84,24-29): error X3504: array index out of bounds
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl
index 005362d..e7e10ee 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-unused-access-past-matrix-elements/0-opt.wgsl.expected.glsl
@@ -36,8 +36,8 @@
   int a = 0;
   int x_67_phi = 0;
   float x_44 = x_6.x_GLF_uniform_float_values[1].el;
-  vec3 x_48 = vec3(0.0f, 0.0f, 0.0f);
-  m43 = mat4x3(vec3(x_44, 0.0f, 0.0f), vec3(0.0f, x_44, 0.0f), vec3(0.0f, 0.0f, x_44), vec3(0.0f, 0.0f, 0.0f));
+  vec3 x_48 = vec3(0.0f);
+  m43 = mat4x3(vec3(x_44, 0.0f, 0.0f), vec3(0.0f, x_44, 0.0f), vec3(0.0f, 0.0f, x_44), vec3(0.0f));
   int x_51 = x_8.x_GLF_uniform_int_values[0].el;
   int x_53 = x_8.x_GLF_uniform_int_values[0].el;
   float x_55 = x_6.x_GLF_uniform_float_values[0].el;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl
index eda3b9a..cfdb6b1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.spvasm.expected.glsl
@@ -34,7 +34,7 @@
   float sums[3] = float[3](0.0f, 0.0f, 0.0f);
   int x_52_phi = 0;
   float x_40 = x_6.x_GLF_uniform_float_values[0].el;
-  m32 = mat3x2(vec2(x_40, 0.0f), vec2(0.0f, x_40), vec2(0.0f, 0.0f));
+  m32 = mat3x2(vec2(x_40, 0.0f), vec2(0.0f, x_40), vec2(0.0f));
   int x_45 = x_8.x_GLF_uniform_int_values[0].el;
   if ((x_45 == 1)) {
     m32[3][x_45] = x_40;
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl
index eda3b9a..cfdb6b1 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/cov-write-past-matrix-elements-unused/0.wgsl.expected.glsl
@@ -34,7 +34,7 @@
   float sums[3] = float[3](0.0f, 0.0f, 0.0f);
   int x_52_phi = 0;
   float x_40 = x_6.x_GLF_uniform_float_values[0].el;
-  m32 = mat3x2(vec2(x_40, 0.0f), vec2(0.0f, x_40), vec2(0.0f, 0.0f));
+  m32 = mat3x2(vec2(x_40, 0.0f), vec2(0.0f, x_40), vec2(0.0f));
   int x_45 = x_8.x_GLF_uniform_int_values[0].el;
   if ((x_45 == 1)) {
     m32[3][x_45] = x_40;
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 3607e5c..f7c09d1 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
@@ -17,7 +17,7 @@
     } else {
       break;
     }
-    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    x_GLF_color = (1.0f).xxxx;
   }
   return 0.0f;
 }
@@ -67,8 +67,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u17p0.0:62: error: Loop must have break.
+shader.hlsl:62: 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 3607e5c..4e0e757 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
@@ -17,7 +17,7 @@
     } else {
       break;
     }
-    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    x_GLF_color = (1.0f).xxxx;
   }
   return 0.0f;
 }
@@ -67,9 +67,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u17p0.0:62: error: Loop must have break.
-Validation failed.
-
-
-
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 fa21c5b..f7c09d1 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
@@ -17,7 +17,7 @@
     } else {
       break;
     }
-    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    x_GLF_color = (1.0f).xxxx;
   }
   return 0.0f;
 }
@@ -67,8 +67,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\uvqg.0:62: error: Loop must have break.
+shader.hlsl:62: 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 fa21c5b..4e0e757 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
@@ -17,7 +17,7 @@
     } else {
       break;
     }
-    x_GLF_color = float4(1.0f, 1.0f, 1.0f, 1.0f);
+    x_GLF_color = (1.0f).xxxx;
   }
   return 0.0f;
 }
@@ -67,9 +67,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\uvqg.0:62: error: Loop must have break.
-Validation failed.
-
-
-
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 66cf344..4455eec2 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
@@ -251,7 +251,7 @@
     if ((x_161_phi == 4)) {
       x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
     } else {
-      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      x_GLF_color = (0.0f).xxxx;
     }
     break;
   }
@@ -281,8 +281,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000002215620C140(8,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000002215620C140(71,16-27): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000002215620C140(186,14-25): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000002215620C140(123,18-29): 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 01f2ccd..4455eec2 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
@@ -251,7 +251,7 @@
     if ((x_161_phi == 4)) {
       x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
     } else {
-      x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+      x_GLF_color = (0.0f).xxxx;
     }
     break;
   }
@@ -281,8 +281,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000020EFE36E240(8,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x0000020EFE36E240(71,16-27): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x0000020EFE36E240(186,14-25): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x0000020EFE36E240(123,18-29): error X4029: infinite loop detected - loop never exits
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.fxc.hlsl
index ba95157..2eb487b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.spvasm.expected.fxc.hlsl
@@ -76,7 +76,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001DCBE0206C0(27,18-29): warning X3557: loop doesn't seem to do anything, consider removing [loop]
-C:\src\tint\test\Shader@0x000001DCBE0206C0(27,18-29): warning X3551: infinite loop detected - loop writes no values
-C:\src\tint\test\Shader@0x000001DCBE0206C0(27,25-28): error X3696: infinite loop detected - loop never exits
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.fxc.hlsl
index 2d86c5a..2eb487b 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/similar-nested-ifs/0-opt.wgsl.expected.fxc.hlsl
@@ -76,7 +76,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000023F9486F180(27,18-29): warning X3557: loop doesn't seem to do anything, consider removing [loop]
-C:\src\tint\test\Shader@0x0000023F9486F180(27,18-29): warning X3551: infinite loop detected - loop writes no values
-C:\src\tint\test\Shader@0x0000023F9486F180(27,25-28): error X3696: infinite loop detected - loop never exits
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.fxc.hlsl
index 562c4dc..cb62fbc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.spvasm.expected.fxc.hlsl
@@ -1,32 +1,5 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
 struct BST {
   int data;
   int leftIndex;
@@ -78,7 +51,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_74_save = x_62;
         const int x_75 = tree[x_74_save].rightIndex;
@@ -97,9 +69,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_63 = x_63_phi;
         x_62_phi = x_63;
@@ -144,7 +114,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_107_save = x_95;
         const int x_108 = tree[x_107_save].rightIndex;
@@ -163,9 +132,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_96 = x_96_phi;
         x_95_phi = x_96;
@@ -210,7 +177,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_140_save = x_128;
         const int x_141 = tree[x_140_save].rightIndex;
@@ -229,9 +195,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_129 = x_129_phi;
         x_128_phi = x_129;
@@ -276,7 +240,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_173_save = x_161;
         const int x_174 = tree[x_173_save].rightIndex;
@@ -295,9 +258,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_162 = x_162_phi;
         x_161_phi = x_162;
@@ -342,7 +303,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_206_save = x_194;
         const int x_207 = tree[x_206_save].rightIndex;
@@ -361,9 +321,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_195 = x_195_phi;
         x_194_phi = x_195;
@@ -408,7 +366,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_239_save = x_227;
         const int x_240 = tree[x_239_save].rightIndex;
@@ -427,9 +384,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_228 = x_228_phi;
         x_227_phi = x_228;
@@ -474,7 +429,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_272_save = x_260;
         const int x_273 = tree[x_272_save].rightIndex;
@@ -493,9 +447,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_261 = x_261_phi;
         x_260_phi = x_261;
@@ -540,7 +492,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_305_save = x_293;
         const int x_306 = tree[x_305_save].rightIndex;
@@ -559,9 +510,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_294 = x_294_phi;
         x_293_phi = x_294;
@@ -606,7 +555,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_338_save = x_326;
         const int x_339 = tree[x_338_save].rightIndex;
@@ -625,9 +573,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_327 = x_327_phi;
         x_326_phi = x_327;
@@ -763,16 +709,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001F9FB4F5860(82,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(22,12-23): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000001F9FB4F5860(148,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(214,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(280,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(346,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(412,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(478,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(544,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(610,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F9FB4F5860(664,7-19): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.fxc.hlsl
index bbb2d87..cb62fbc 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl.expected.fxc.hlsl
@@ -1,112 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:46:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:60:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:62:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:105:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:119:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:121:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:164:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:178:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:180:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:223:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:237:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:239:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:282:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:296:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:298:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:341:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:355:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:357:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:400:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:414:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:416:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:459:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:473:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:475:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:518:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:532:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/spv-load-from-frag-color/1.wgsl:534:9 warning: code is unreachable
-        return;
-        ^^^^^^
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -159,7 +51,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_74_save = x_62;
         const int x_75 = tree[x_74_save].rightIndex;
@@ -178,9 +69,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_63 = x_63_phi;
         x_62_phi = x_63;
@@ -225,7 +114,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_107_save = x_95;
         const int x_108 = tree[x_107_save].rightIndex;
@@ -244,9 +132,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_96 = x_96_phi;
         x_95_phi = x_96;
@@ -291,7 +177,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_140_save = x_128;
         const int x_141 = tree[x_140_save].rightIndex;
@@ -310,9 +195,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_129 = x_129_phi;
         x_128_phi = x_129;
@@ -357,7 +240,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_173_save = x_161;
         const int x_174 = tree[x_173_save].rightIndex;
@@ -376,9 +258,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_162 = x_162_phi;
         x_161_phi = x_162;
@@ -423,7 +303,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_206_save = x_194;
         const int x_207 = tree[x_206_save].rightIndex;
@@ -442,9 +321,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_195 = x_195_phi;
         x_194_phi = x_195;
@@ -489,7 +366,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_239_save = x_227;
         const int x_240 = tree[x_239_save].rightIndex;
@@ -508,9 +384,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_228 = x_228_phi;
         x_227_phi = x_228;
@@ -555,7 +429,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_272_save = x_260;
         const int x_273 = tree[x_272_save].rightIndex;
@@ -574,9 +447,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_261 = x_261_phi;
         x_260_phi = x_261;
@@ -621,7 +492,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_305_save = x_293;
         const int x_306 = tree[x_305_save].rightIndex;
@@ -640,9 +510,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_294 = x_294_phi;
         x_293_phi = x_294;
@@ -687,7 +555,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_338_save = x_326;
         const int x_339 = tree[x_338_save].rightIndex;
@@ -706,9 +573,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_327 = x_327_phi;
         x_326_phi = x_327;
@@ -844,16 +709,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000018520DAA240(82,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(22,12-23): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x0000018520DAA240(148,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(214,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(280,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(346,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(412,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(478,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(544,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(610,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000018520DAA240(664,7-19): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-internal error: compilation aborted unexpectedly
-
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 6aa974e..6fbf32e 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 +1,345 @@
-SKIP: test times out after 30s with FXC
+SKIP: FAILED
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static int map[256] = (int[256])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  int2 ipos = int2(0, 0);
+  int i = 0;
+  int2 p = int2(0, 0);
+  bool canwalk = false;
+  int v = 0;
+  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)));
+  i = 0;
+  {
+    [loop] for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = (0).xx;
+  canwalk = true;
+  v = 0;
+  [loop] while (true) {
+    bool x_104 = false;
+    bool x_124 = false;
+    bool x_144 = false;
+    bool x_164 = false;
+    bool x_105_phi = false;
+    bool x_125_phi = false;
+    bool x_145_phi = false;
+    bool x_165_phi = false;
+    v = (v + 1);
+    directions = 0;
+    const int x_91 = p.x;
+    const 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))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    if (x_105_phi) {
+      directions = (directions + 1);
+    }
+    const int x_111 = p.y;
+    const 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))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    if (x_125_phi) {
+      directions = (directions + 1);
+    }
+    const int x_131 = p.x;
+    const 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))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    if (x_145_phi) {
+      directions = (directions + 1);
+    }
+    const int x_151 = p.y;
+    const 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))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    if (x_165_phi) {
+      directions = (directions + 1);
+    }
+    bool x_229 = false;
+    bool x_242 = false;
+    bool x_281 = false;
+    int x_288 = 0;
+    int x_289 = 0;
+    int x_295 = 0;
+    int x_296 = 0;
+    int x_303[256] = (int[256])0;
+    int x_304[256] = (int[256])0;
+    int x_315 = 0;
+    int x_316 = 0;
+    bool x_359 = false;
+    bool x_372 = false;
+    bool x_411 = false;
+    bool x_424 = false;
+    bool x_230_phi = false;
+    bool x_243_phi = false;
+    bool x_282_phi = false;
+    int x_290_phi = 0;
+    int x_297_phi = 0;
+    int x_305_phi[256] = (int[256])0;
+    int x_317_phi = 0;
+    bool x_360_phi = false;
+    bool x_373_phi = false;
+    bool x_412_phi = false;
+    bool x_425_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      {
+        [loop] for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            [loop] for(; (j < 8); j = (j + 1)) {
+              const int x_196 = map[((j * 2) + ((i * 2) * 16))];
+              if ((x_196 == 0)) {
+                p.x = (j * 2);
+                p.y = (i * 2);
+                canwalk = true;
+              }
+            }
+          }
+        }
+      }
+      const int x_211 = p.x;
+      const int x_213 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      d = (v % (directions == 0 ? 1 : directions));
+      v = (v + directions);
+      const bool x_224 = (d >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        const int x_228 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      const 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))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      if (x_243_phi) {
+        d = (d - 1);
+        const int x_249 = p.x;
+        const int x_251 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        const int x_256 = p.x;
+        const 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;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        const int x_272 = p.x;
+        p.x = (x_272 - 2);
+      }
+      const bool x_276 = (d >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        const int x_280 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      const bool x_282 = x_282_phi;
+      if (x_282) {
+        x_288 = p.x;
+        x_290_phi = x_288;
+      } else {
+        x_289 = 0;
+        x_290_phi = x_289;
+      }
+      const int x_290 = x_290_phi;
+      if (x_282) {
+        x_295 = p.y;
+        x_297_phi = x_295;
+      } else {
+        x_296 = 0;
+        x_297_phi = x_296;
+      }
+      const int x_299 = ((x_297_phi - 2) * 16);
+      if (x_282) {
+        x_303 = map;
+        x_305_phi = x_303;
+      } else {
+        const int tint_symbol_4[256] = (int[256])0;
+        x_304 = tint_symbol_4;
+        x_305_phi = x_304;
+      }
+      const int x_305[256] = x_305_phi;
+      if (x_282) {
+        const int tint_symbol_5[256] = (int[256])0;
+        map = tint_symbol_5;
+      }
+      if (x_282) {
+        map = x_305;
+      }
+      if (x_282) {
+        x_315 = map[(x_290 + x_299)];
+        x_317_phi = x_315;
+      } else {
+        x_316 = 0;
+        x_317_phi = x_316;
+      }
+      const bool x_318 = (x_317_phi == 0);
+      if ((x_282 ? x_318 : x_282)) {
+        d = (d - 1);
+        const int x_326 = p.x;
+        const int x_328 = p.y;
+        map[(x_326 + (x_328 * 16))] = 1;
+        const int x_333 = p.x;
+        const 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_6[256] = (int[256])0;
+        map = tint_symbol_6;
+        map = x_345;
+        map[(x_341 + ((x_343 - 2) * 16))] = 1;
+        const int x_350 = p.y;
+        p.y = (x_350 - 2);
+      }
+      const bool x_354 = (d >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        const int x_358 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      const 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))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      if (x_373_phi) {
+        d = (d - 1);
+        const int x_379 = p.x;
+        const int x_381 = p.y;
+        map[(x_379 + (x_381 * 16))] = 1;
+        const int x_386 = p.x;
+        const 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;
+        map[((x_394 + 2) + (x_397 * 16))] = 1;
+        const int x_402 = p.x;
+        p.x = (x_402 + 2);
+      }
+      const bool x_406 = (d >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        const int x_410 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      const 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))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      if (x_425_phi) {
+        d = (d - 1);
+        const int x_431 = p.x;
+        const int x_433 = p.y;
+        map[(x_431 + (x_433 * 16))] = 1;
+        const int x_438 = p.x;
+        const 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;
+        map[(x_446 + ((x_448 + 2) * 16))] = 1;
+        const 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)];
+    if ((x_464 == 1)) {
+      x_GLF_color = (1.0f).xxxx;
+      return;
+    }
+    {
+      if (canwalk) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  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_7 = {x_GLF_color};
+  return tint_symbol_7;
+}
+
+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;
+}
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 6aa974e..6fbf32e 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 +1,345 @@
-SKIP: test times out after 30s with FXC
+SKIP: FAILED
+
+static float4 gl_FragCoord = float4(0.0f, 0.0f, 0.0f, 0.0f);
+cbuffer cbuffer_x_7 : register(b0, space0) {
+  uint4 x_7[1];
+};
+static int map[256] = (int[256])0;
+static float4 x_GLF_color = float4(0.0f, 0.0f, 0.0f, 0.0f);
+
+void main_1() {
+  float2 pos = float2(0.0f, 0.0f);
+  int2 ipos = int2(0, 0);
+  int i = 0;
+  int2 p = int2(0, 0);
+  bool canwalk = false;
+  int v = 0;
+  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)));
+  i = 0;
+  {
+    [loop] for(; (i < 256); i = (i + 1)) {
+      map[i] = 0;
+    }
+  }
+  p = (0).xx;
+  canwalk = true;
+  v = 0;
+  [loop] while (true) {
+    bool x_104 = false;
+    bool x_124 = false;
+    bool x_144 = false;
+    bool x_164 = false;
+    bool x_105_phi = false;
+    bool x_125_phi = false;
+    bool x_145_phi = false;
+    bool x_165_phi = false;
+    v = (v + 1);
+    directions = 0;
+    const int x_91 = p.x;
+    const 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))];
+      x_104 = (x_103 == 0);
+      x_105_phi = x_104;
+    }
+    if (x_105_phi) {
+      directions = (directions + 1);
+    }
+    const int x_111 = p.y;
+    const 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))];
+      x_124 = (x_123 == 0);
+      x_125_phi = x_124;
+    }
+    if (x_125_phi) {
+      directions = (directions + 1);
+    }
+    const int x_131 = p.x;
+    const 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))];
+      x_144 = (x_143 == 0);
+      x_145_phi = x_144;
+    }
+    if (x_145_phi) {
+      directions = (directions + 1);
+    }
+    const int x_151 = p.y;
+    const 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))];
+      x_164 = (x_163 == 0);
+      x_165_phi = x_164;
+    }
+    if (x_165_phi) {
+      directions = (directions + 1);
+    }
+    bool x_229 = false;
+    bool x_242 = false;
+    bool x_281 = false;
+    int x_288 = 0;
+    int x_289 = 0;
+    int x_295 = 0;
+    int x_296 = 0;
+    int x_303[256] = (int[256])0;
+    int x_304[256] = (int[256])0;
+    int x_315 = 0;
+    int x_316 = 0;
+    bool x_359 = false;
+    bool x_372 = false;
+    bool x_411 = false;
+    bool x_424 = false;
+    bool x_230_phi = false;
+    bool x_243_phi = false;
+    bool x_282_phi = false;
+    int x_290_phi = 0;
+    int x_297_phi = 0;
+    int x_305_phi[256] = (int[256])0;
+    int x_317_phi = 0;
+    bool x_360_phi = false;
+    bool x_373_phi = false;
+    bool x_412_phi = false;
+    bool x_425_phi = false;
+    if ((directions == 0)) {
+      canwalk = false;
+      i = 0;
+      {
+        [loop] for(; (i < 8); i = (i + 1)) {
+          j = 0;
+          {
+            [loop] for(; (j < 8); j = (j + 1)) {
+              const int x_196 = map[((j * 2) + ((i * 2) * 16))];
+              if ((x_196 == 0)) {
+                p.x = (j * 2);
+                p.y = (i * 2);
+                canwalk = true;
+              }
+            }
+          }
+        }
+      }
+      const int x_211 = p.x;
+      const int x_213 = p.y;
+      map[(x_211 + (x_213 * 16))] = 1;
+    } else {
+      d = (v % (directions == 0 ? 1 : directions));
+      v = (v + directions);
+      const bool x_224 = (d >= 0);
+      x_230_phi = x_224;
+      if (x_224) {
+        const int x_228 = p.x;
+        x_229 = (x_228 > 0);
+        x_230_phi = x_229;
+      }
+      const 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))];
+        x_242 = (x_241 == 0);
+        x_243_phi = x_242;
+      }
+      if (x_243_phi) {
+        d = (d - 1);
+        const int x_249 = p.x;
+        const int x_251 = p.y;
+        map[(x_249 + (x_251 * 16))] = 1;
+        const int x_256 = p.x;
+        const 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;
+        map[((x_264 - 2) + (x_267 * 16))] = 1;
+        const int x_272 = p.x;
+        p.x = (x_272 - 2);
+      }
+      const bool x_276 = (d >= 0);
+      x_282_phi = x_276;
+      if (x_276) {
+        const int x_280 = p.y;
+        x_281 = (x_280 > 0);
+        x_282_phi = x_281;
+      }
+      const bool x_282 = x_282_phi;
+      if (x_282) {
+        x_288 = p.x;
+        x_290_phi = x_288;
+      } else {
+        x_289 = 0;
+        x_290_phi = x_289;
+      }
+      const int x_290 = x_290_phi;
+      if (x_282) {
+        x_295 = p.y;
+        x_297_phi = x_295;
+      } else {
+        x_296 = 0;
+        x_297_phi = x_296;
+      }
+      const int x_299 = ((x_297_phi - 2) * 16);
+      if (x_282) {
+        x_303 = map;
+        x_305_phi = x_303;
+      } else {
+        const int tint_symbol_4[256] = (int[256])0;
+        x_304 = tint_symbol_4;
+        x_305_phi = x_304;
+      }
+      const int x_305[256] = x_305_phi;
+      if (x_282) {
+        const int tint_symbol_5[256] = (int[256])0;
+        map = tint_symbol_5;
+      }
+      if (x_282) {
+        map = x_305;
+      }
+      if (x_282) {
+        x_315 = map[(x_290 + x_299)];
+        x_317_phi = x_315;
+      } else {
+        x_316 = 0;
+        x_317_phi = x_316;
+      }
+      const bool x_318 = (x_317_phi == 0);
+      if ((x_282 ? x_318 : x_282)) {
+        d = (d - 1);
+        const int x_326 = p.x;
+        const int x_328 = p.y;
+        map[(x_326 + (x_328 * 16))] = 1;
+        const int x_333 = p.x;
+        const 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_6[256] = (int[256])0;
+        map = tint_symbol_6;
+        map = x_345;
+        map[(x_341 + ((x_343 - 2) * 16))] = 1;
+        const int x_350 = p.y;
+        p.y = (x_350 - 2);
+      }
+      const bool x_354 = (d >= 0);
+      x_360_phi = x_354;
+      if (x_354) {
+        const int x_358 = p.x;
+        x_359 = (x_358 < 14);
+        x_360_phi = x_359;
+      }
+      const 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))];
+        x_372 = (x_371 == 0);
+        x_373_phi = x_372;
+      }
+      if (x_373_phi) {
+        d = (d - 1);
+        const int x_379 = p.x;
+        const int x_381 = p.y;
+        map[(x_379 + (x_381 * 16))] = 1;
+        const int x_386 = p.x;
+        const 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;
+        map[((x_394 + 2) + (x_397 * 16))] = 1;
+        const int x_402 = p.x;
+        p.x = (x_402 + 2);
+      }
+      const bool x_406 = (d >= 0);
+      x_412_phi = x_406;
+      if (x_406) {
+        const int x_410 = p.y;
+        x_411 = (x_410 < 14);
+        x_412_phi = x_411;
+      }
+      const 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))];
+        x_424 = (x_423 == 0);
+        x_425_phi = x_424;
+      }
+      if (x_425_phi) {
+        d = (d - 1);
+        const int x_431 = p.x;
+        const int x_433 = p.y;
+        map[(x_431 + (x_433 * 16))] = 1;
+        const int x_438 = p.x;
+        const 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;
+        map[(x_446 + ((x_448 + 2) * 16))] = 1;
+        const 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)];
+    if ((x_464 == 1)) {
+      x_GLF_color = (1.0f).xxxx;
+      return;
+    }
+    {
+      if (canwalk) {
+      } else {
+        break;
+      }
+    }
+  }
+  x_GLF_color = float4(0.0f, 0.0f, 0.0f, 1.0f);
+  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_7 = {x_GLF_color};
+  return tint_symbol_7;
+}
+
+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;
+}
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.fxc.hlsl
index 383aa47..c36a027 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.spvasm.expected.fxc.hlsl
@@ -1,32 +1,5 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
 struct BST {
   int data;
   int leftIndex;
@@ -78,7 +51,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_70_save = x_58;
         const int x_71 = tree[x_70_save].rightIndex;
@@ -97,9 +69,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_59 = x_59_phi;
         x_58_phi = x_59;
@@ -144,7 +114,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_103_save = x_91;
         const int x_104 = tree[x_103_save].rightIndex;
@@ -163,9 +132,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_92 = x_92_phi;
         x_91_phi = x_92;
@@ -210,7 +177,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_136_save = x_124;
         const int x_137 = tree[x_136_save].rightIndex;
@@ -229,9 +195,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_125 = x_125_phi;
         x_124_phi = x_125;
@@ -276,7 +240,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_169_save = x_157;
         const int x_170 = tree[x_169_save].rightIndex;
@@ -295,9 +258,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_158 = x_158_phi;
         x_157_phi = x_158;
@@ -342,7 +303,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_202_save = x_190;
         const int x_203 = tree[x_202_save].rightIndex;
@@ -361,9 +321,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_191 = x_191_phi;
         x_190_phi = x_191;
@@ -408,7 +366,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_235_save = x_223;
         const int x_236 = tree[x_235_save].rightIndex;
@@ -427,9 +384,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_224 = x_224_phi;
         x_223_phi = x_224;
@@ -474,7 +429,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_268_save = x_256;
         const int x_269 = tree[x_268_save].rightIndex;
@@ -493,9 +447,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_257 = x_257_phi;
         x_256_phi = x_257;
@@ -540,7 +492,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_301_save = x_289;
         const int x_302 = tree[x_301_save].rightIndex;
@@ -559,9 +510,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_290 = x_290_phi;
         x_289_phi = x_290;
@@ -606,7 +555,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_334_save = x_322;
         const int x_335 = tree[x_334_save].rightIndex;
@@ -625,9 +573,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_323 = x_323_phi;
         x_322_phi = x_323;
@@ -761,16 +707,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000022EDBF08060(82,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(22,12-23): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x0000022EDBF08060(148,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(214,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(280,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(346,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(412,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(478,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(544,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(610,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x0000022EDBF08060(662,7-19): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.fxc.hlsl
index 7ac5f69..c36a027 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl.expected.fxc.hlsl
@@ -1,112 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:46:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:60:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:62:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:105:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:119:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:121:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:164:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:178:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:180:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:223:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:237:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:239:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:282:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:296:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:298:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:341:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:355:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:357:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:400:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:414:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:416:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:459:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:473:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:475:9 warning: code is unreachable
-        return;
-        ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:518:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:532:11 warning: code is unreachable
-          return;
-          ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-false-if-discard-loop/0.wgsl:534:9 warning: code is unreachable
-        return;
-        ^^^^^^
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -159,7 +51,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_70_save = x_58;
         const int x_71 = tree[x_70_save].rightIndex;
@@ -178,9 +69,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_59 = x_59_phi;
         x_58_phi = x_59;
@@ -225,7 +114,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_103_save = x_91;
         const int x_104 = tree[x_103_save].rightIndex;
@@ -244,9 +132,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_92 = x_92_phi;
         x_91_phi = x_92;
@@ -291,7 +177,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_136_save = x_124;
         const int x_137 = tree[x_136_save].rightIndex;
@@ -310,9 +195,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_125 = x_125_phi;
         x_124_phi = x_125;
@@ -357,7 +240,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_169_save = x_157;
         const int x_170 = tree[x_169_save].rightIndex;
@@ -376,9 +258,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_158 = x_158_phi;
         x_157_phi = x_158;
@@ -423,7 +303,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_202_save = x_190;
         const int x_203 = tree[x_202_save].rightIndex;
@@ -442,9 +321,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_191 = x_191_phi;
         x_190_phi = x_191;
@@ -489,7 +366,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_235_save = x_223;
         const int x_236 = tree[x_235_save].rightIndex;
@@ -508,9 +384,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_224 = x_224_phi;
         x_223_phi = x_224;
@@ -555,7 +429,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_268_save = x_256;
         const int x_269 = tree[x_268_save].rightIndex;
@@ -574,9 +447,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_257 = x_257_phi;
         x_256_phi = x_257;
@@ -621,7 +492,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_301_save = x_289;
         const int x_302 = tree[x_301_save].rightIndex;
@@ -640,9 +510,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_290 = x_290_phi;
         x_289_phi = x_290;
@@ -687,7 +555,6 @@
           }
           continue;
         }
-        return;
       } else {
         const int x_334_save = x_322;
         const int x_335 = tree[x_334_save].rightIndex;
@@ -706,9 +573,7 @@
           }
           continue;
         }
-        return;
       }
-      return;
       {
         x_323 = x_323_phi;
         x_322_phi = x_323;
@@ -842,16 +707,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001F23007A140(82,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(22,12-23): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000001F23007A140(148,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(214,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(280,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(346,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(412,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(478,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(544,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(610,5-17): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-C:\src\tint\test\Shader@0x000001F23007A140(662,7-19): warning X3557: loop only executes for 1 iteration(s), forcing loop to unroll
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.fxc.hlsl
index ccdf9a6..45ce827 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.spvasm.expected.fxc.hlsl
@@ -1,8 +1,5 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
 struct BST {
   int data;
   int leftIndex;
@@ -55,7 +52,6 @@
         baseIndex = x_198;
         continue;
       }
-      return;
     } else {
       const int x_201 = tree_1[baseIndex].rightIndex;
       if ((x_201 == -1)) {
@@ -75,9 +71,7 @@
         baseIndex = x_218;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -241,6 +235,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000002912962B080(25,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.fxc.hlsl
index ec6bef4..45ce827 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl.expected.fxc.hlsl
@@ -1,16 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl:58:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl:81:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/0.wgsl:83:5 warning: code is unreachable
-    return;
-    ^^^^^^
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -64,7 +52,6 @@
         baseIndex = x_198;
         continue;
       }
-      return;
     } else {
       const int x_201 = tree_1[baseIndex].rightIndex;
       if ((x_201 == -1)) {
@@ -84,9 +71,7 @@
         baseIndex = x_218;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -250,6 +235,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001CA0D820F20(25,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.fxc.hlsl
index 0a769d2..99177d4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.spvasm.expected.fxc.hlsl
@@ -1,8 +1,5 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
 struct BST {
   int data;
   int leftIndex;
@@ -56,7 +53,6 @@
         baseIndex = x_209;
         continue;
       }
-      return;
     } else {
       const int x_212 = tree_1[baseIndex].rightIndex;
       if ((x_212 == -1)) {
@@ -76,9 +72,7 @@
         baseIndex = x_229;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -255,6 +249,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000002A8C1306820(26,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.fxc.hlsl
index 79c1046..99177d4 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl.expected.fxc.hlsl
@@ -1,16 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl:60:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl:83:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-fragcoord-less-than-zero/1.wgsl:85:5 warning: code is unreachable
-    return;
-    ^^^^^^
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -65,7 +53,6 @@
         baseIndex = x_209;
         continue;
       }
-      return;
     } else {
       const int x_212 = tree_1[baseIndex].rightIndex;
       if ((x_212 == -1)) {
@@ -85,9 +72,7 @@
         baseIndex = x_229;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -264,6 +249,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001BE36107D80(26,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.fxc.hlsl
index cacbb8c..e8e3b26 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.spvasm.expected.fxc.hlsl
@@ -1,8 +1,5 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
 struct BST {
   int data;
   int leftIndex;
@@ -55,7 +52,6 @@
         baseIndex = x_198;
         continue;
       }
-      return;
     } else {
       const int x_201 = tree[baseIndex].rightIndex;
       if ((x_201 == -1)) {
@@ -75,9 +71,7 @@
         baseIndex = x_218;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -241,6 +235,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000025CD445EF60(25,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.fxc.hlsl
index ece967e..e8e3b26 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl.expected.fxc.hlsl
@@ -1,16 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl:58:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl:81:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/0-opt.wgsl:83:5 warning: code is unreachable
-    return;
-    ^^^^^^
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -64,7 +52,6 @@
         baseIndex = x_198;
         continue;
       }
-      return;
     } else {
       const int x_201 = tree[baseIndex].rightIndex;
       if ((x_201 == -1)) {
@@ -84,9 +71,7 @@
         baseIndex = x_218;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -250,6 +235,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001737220A3A0(25,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.fxc.hlsl
index ade3034..7ccd78f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.spvasm.expected.fxc.hlsl
@@ -1,8 +1,5 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
-warning: code is unreachable
-warning: code is unreachable
-warning: code is unreachable
 struct BST {
   int data;
   int leftIndex;
@@ -62,7 +59,6 @@
         baseIndex = x_248;
         continue;
       }
-      return;
     } else {
       const int x_251 = tree[baseIndex].rightIndex;
       if ((x_251 == -1)) {
@@ -82,9 +78,7 @@
         baseIndex = x_268;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -284,6 +278,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000019568397DE0(32,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.fxc.hlsl
index f44372e..7ccd78f 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl.expected.fxc.hlsl
@@ -1,16 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl:70:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl:93:7 warning: code is unreachable
-      return;
-      ^^^^^^
-
-vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-with-loop-read-write-global/1.wgsl:95:5 warning: code is unreachable
-    return;
-    ^^^^^^
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -71,7 +59,6 @@
         baseIndex = x_248;
         continue;
       }
-      return;
     } else {
       const int x_251 = tree[baseIndex].rightIndex;
       if ((x_251 == -1)) {
@@ -91,9 +78,7 @@
         baseIndex = x_268;
         continue;
       }
-      return;
     }
-    return;
   }
   return;
 }
@@ -293,6 +278,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x0000016D6EA06C40(32,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-internal error: compilation aborted unexpectedly
-
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 033e565..0f5cc33 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
@@ -45,8 +45,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u11r8.0:40: error: Loop must have break.
+shader.hlsl:40: 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 033e565..bea15f8 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
@@ -45,9 +45,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u11r8.0:40: error: Loop must have break.
-Validation failed.
-
-
-
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 6c8fdc5..0f5cc33 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
@@ -45,8 +45,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u1v50.0:40: error: Loop must have break.
+shader.hlsl:40: 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 6c8fdc5..bea15f8 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
@@ -45,9 +45,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u1v50.0:40: error: Loop must have break.
-Validation failed.
-
-
-
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 8e7733c..675a4fb 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
@@ -50,8 +50,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\u1f84.0:45: error: Loop must have break.
+shader.hlsl:45: 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 8e7733c..212c426 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
@@ -50,9 +50,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u1f84.0:45: error: Loop must have break.
-Validation failed.
-
-
-
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 f6f72ef..675a4fb 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
@@ -50,8 +50,11 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
+DXC validation failure:
+warning: DXIL.dll not found.  Resulting DXIL will not be signed for use in release environments.
+
 error: validation errors
-C:\src\temp\uk3k.0:45: error: Loop must have break.
+shader.hlsl:45: 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 f6f72ef..212c426 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
@@ -50,9 +50,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\uk3k.0:45: error: Loop must have break.
-Validation failed.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.fxc.hlsl
index 71191e1..284b42d 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.spvasm.expected.fxc.hlsl
@@ -36,7 +36,7 @@
   int d = 0;
   float GLF_live6sums[9] = (float[9])0;
   idx = 0;
-  m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), float3(0.0f, 0.0f, 0.0f));
+  m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), (0.0f).xxx);
   ll_1 = 0;
   GLF_live6rows = 2;
   [loop] while (true) {
@@ -98,9 +98,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\umdw.0:93: error: Loop must have break.
-Validation failed.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.fxc.hlsl
index e51bffe..284b42d 100755
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-before-break/0-opt.wgsl.expected.fxc.hlsl
@@ -36,7 +36,7 @@
   int d = 0;
   float GLF_live6sums[9] = (float[9])0;
   idx = 0;
-  m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), float3(0.0f, 0.0f, 0.0f));
+  m43 = float4x3(float3(1.0f, 0.0f, 0.0f), float3(0.0f, 1.0f, 0.0f), float3(0.0f, 0.0f, 1.0f), (0.0f).xxx);
   ll_1 = 0;
   GLF_live6rows = 2;
   [loop] while (true) {
@@ -65,22 +65,10 @@
         {
           [loop] for(; (1 < z); c = (c + 1)) {
             d = 0;
-            bool tint_tmp = (d >= 0);
-            if (tint_tmp) {
-              tint_tmp = (d < 3);
-            }
-            bool tint_tmp_1 = (c >= 0);
-            if (tint_tmp_1) {
-              tint_tmp_1 = (c < 4);
-            }
-            set_scalar_float4x3(tempm43, ((tint_tmp) ? d : 0), ((tint_tmp_1) ? c : 0), 1.0f);
+            set_scalar_float4x3(tempm43, (((d >= 0) & (d < 3)) ? d : 0), (((c >= 0) & (c < 4)) ? c : 0), 1.0f);
           }
         }
-        bool tint_tmp_2 = (idx >= 0);
-        if (tint_tmp_2) {
-          tint_tmp_2 = (idx < 9);
-        }
-        const int x_117 = ((tint_tmp_2) ? idx : 0);
+        const int x_117 = (((idx >= 0) & (idx < 9)) ? idx : 0);
         const float x_119 = m43[ctr].y;
         const float x_121 = GLF_live6sums[x_117];
         GLF_live6sums[x_117] = (x_121 + x_119);
@@ -110,9 +98,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-error: validation errors
-C:\src\temp\u1tig.0:105: error: Loop must have break.
-Validation failed.
-
-
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.fxc.hlsl
index d3e4209..364fa17 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.spvasm.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -167,7 +167,7 @@
   const int x_109 = search_i1_(param_4);
   nodeData = float(x_109);
   const float x_409 = angle;
-  return ((float3(30.0f, 30.0f, 30.0f) + (float3(1.0f, 5.0f, nodeData) * x_409)) / float3(50.0f, 50.0f, 50.0f));
+  return (((30.0f).xxx + (float3(1.0f, 5.0f, nodeData) * x_409)) / (50.0f).xxx);
 }
 
 void main_1() {
@@ -296,7 +296,7 @@
   param_27 = 13;
   insert_i1_i1_(param_26, param_27);
   const float4 x_285 = gl_FragCoord;
-  z = (float2(x_285.y, x_285.x) / float2(256.0f, 256.0f));
+  z = (float2(x_285.y, x_285.x) / (256.0f).xx);
   const float x_289 = z.x;
   param_28 = x_289;
   const float x_290 = makeFrame_f1_(param_28);
@@ -368,7 +368,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001F7677BB400(35,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000001F7677BB400(145,3): warning X4000: use of potentially uninitialized variable (makeFrame_f1_)
-internal error: compilation aborted unexpectedly
-
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.fxc.hlsl b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.fxc.hlsl
index b17f345..364fa17 100644
--- a/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.fxc.hlsl
+++ b/test/tint/vk-gl-cts/graphicsfuzz/write-red-after-search/0-opt.wgsl.expected.fxc.hlsl
@@ -1,4 +1,4 @@
-SKIP: FAILED https://crbug.com/tint/1522
+SKIP: FAILED
 
 struct BST {
   int data;
@@ -78,11 +78,7 @@
         return;
       } else {
         GLF_live8i = 1;
-        bool tint_tmp = (GLF_live8i >= 0);
-        if (tint_tmp) {
-          tint_tmp = (GLF_live8i < 50);
-        }
-        const int x_369 = ((tint_tmp) ? GLF_live8i : 0);
+        const int x_369 = (((GLF_live8i >= 0) & (GLF_live8i < 50)) ? GLF_live8i : 0);
         const float x_371 = GLF_live8A[0];
         const float x_373 = GLF_live8A[x_369];
         GLF_live8A[x_369] = (x_373 + x_371);
@@ -171,7 +167,7 @@
   const int x_109 = search_i1_(param_4);
   nodeData = float(x_109);
   const float x_409 = angle;
-  return ((float3(30.0f, 30.0f, 30.0f) + (float3(1.0f, 5.0f, nodeData) * x_409)) / float3(50.0f, 50.0f, 50.0f));
+  return (((30.0f).xxx + (float3(1.0f, 5.0f, nodeData) * x_409)) / (50.0f).xxx);
 }
 
 void main_1() {
@@ -274,11 +270,7 @@
       const float x_269 = GLF_live4obj.even_numbers[1];
       {
         float tint_symbol_1[10] = GLF_live4obj.even_numbers;
-        bool tint_tmp_1 = (x_144 >= 0);
-        if (tint_tmp_1) {
-          tint_tmp_1 = (x_145 < 10);
-        }
-        tint_symbol_1[((tint_tmp_1) ? x_146 : 0)] = x_269;
+        tint_symbol_1[(((x_144 >= 0) & (x_145 < 10)) ? x_146 : 0)] = x_269;
         GLF_live4obj.even_numbers = tint_symbol_1;
       }
       const int x_147 = GLF_live4i;
@@ -286,11 +278,7 @@
       const int x_149 = GLF_live4i;
       {
         float tint_symbol_3[10] = GLF_live4obj.even_numbers;
-        bool tint_tmp_2 = (x_147 >= 0);
-        if (tint_tmp_2) {
-          tint_tmp_2 = (x_148 < 10);
-        }
-        tint_symbol_3[((tint_tmp_2) ? x_149 : 0)] = 1.0f;
+        tint_symbol_3[(((x_147 >= 0) & (x_148 < 10)) ? x_149 : 0)] = 1.0f;
         GLF_live4obj.even_numbers = tint_symbol_3;
       }
     }
@@ -308,7 +296,7 @@
   param_27 = 13;
   insert_i1_i1_(param_26, param_27);
   const float4 x_285 = gl_FragCoord;
-  z = (float2(x_285.y, x_285.x) / float2(256.0f, 256.0f));
+  z = (float2(x_285.y, x_285.x) / (256.0f).xx);
   const float x_289 = z.x;
   param_28 = x_289;
   const float x_290 = makeFrame_f1_(param_28);
@@ -380,7 +368,3 @@
   wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
   return wrapper_result;
 }
-C:\src\tint\test\Shader@0x000001C9889DF080(35,10-21): warning X3557: loop only executes for 0 iteration(s), consider removing [loop]
-C:\src\tint\test\Shader@0x000001C9889DF080(149,3): warning X4000: use of potentially uninitialized variable (makeFrame_f1_)
-internal error: compilation aborted unexpectedly
-